#include <stdio.h>
void m(int *a,int b);
void s(int *a,int b);
void d(int *a,int b);
int len = 0;
int main(){
int n1;
while(scanf("%d",&n1)==1){
if(n1<200){
printf("%d\n",(n1*n1-1)*n1*n1/12);
}else{
int num[100]={0},n2=n1,i;
for(i=0;n2>0&&i<100;i++){
num[i] = n2%10;
n2/=10;
len++;
}
m(num,n1);
s(num,1);
m(num,n1);
m(num,n1);
d(num,12);
for(i=1;i<=len;i++)printf("%d",num[len-i]);
printf("\n");
len = 0;
}
}
return 0;
}
void m(int *a,int b){
int i,temp,carry = 0;
for(i=0;i<len;i++){
temp = a[i] * b +carry;
a[i] = temp % 10;
carry = temp/10;
if(i+1==len && carry>0)len++;
}
}
void s(int *a,int b){
int i,temp,borrow = 0;
a[0] -= b;
for(i=0;i<len;i++){
a[i]-= borrow;
if(a[i]<0){
a[i]+=10;
borrow = 1;
}if(borrow&&i==len-1)len--;
}
}
void d(int *a,int b){
int i,r=0;
for(i=len-1;i>=0;i--){
r = r * 10 + a[i];
a[i] = r/b;
r%=b;
if(r<12&&i==0)len--;
}
if(!a[len-1])len--;
}
公式不是((n2-1) * n2) / 12嗎?
#include
void m(int *a,int b);
void s(int *a,int b);
void d(int *a,int b);
int len = 0;
int main(){
int n1;
while(scanf("%d",&n1)==1){
if(n1<200){
printf("%d\n",(n1*n1-1)*n1*n1/12);
}else{
int num[100]={0},n2=n1,i;
for(i=0;n2>0&&i<100;i++){
num[i] = n2%10;
n2/=10;
len++;
}
m(num,n1);
s(num,1);
m(num,n1);
m(num,n1);
d(num,12);
for(i=1;i<=len;i++)printf("%d",num[len-i]);
printf("\n");
len = 0;
}
}
return 0;
}
void m(int *a,int b){
int i,temp,carry = 0;
for(i=0;i
temp = a[i] * b +carry;
a[i] = temp % 10;
carry = temp/10;
if(i+1==len && carry>0)len++;
}
}
void s(int *a,int b){
int i,temp,borrow = 0;
a[0] -= b;
for(i=0;i
a[i]-= borrow;
if(a[i]<0){
a[i]+=10;
borrow = 1;
}if(borrow&&i==len-1)len--;
}
}
void d(int *a,int b){
int i,r=0;
for(i=len-1;i>=0;i--){
r = r * 10 + a[i];
a[i] = r/b;
r%=b;
if(r<12&&i==0)len--;
}
if(!a[len-1])len--;
}
公式不是((n2-1) * n2) / 12嗎?
檢查過了
是你的程式問題
有BUG
#include
void m(int *a,int b);
void s(int *a,int b);
void d(int *a,int b);
int len = 0;
int main(){
int n1;
while(scanf("%d",&n1)==1){
if(n1<200){
printf("%d\n",(n1*n1-1)*n1*n1/12);
}else{
int num[100]={0},n2=n1,i;
for(i=0;n2>0&&i<100;i++){
num[i] = n2%10;
n2/=10;
len++;
}
m(num,n1);
s(num,1);
m(num,n1);
m(num,n1);
d(num,12);
for(i=1;i<=len;i++)printf("%d",num[len-i]);
printf("\n");
len = 0;
}
}
return 0;
}
void m(int *a,int b){
int i,temp,carry = 0;
for(i=0;i
temp = a[i] * b +carry;
a[i] = temp % 10;
carry = temp/10;
if(i+1==len && carry>0)len++;
}
}
void s(int *a,int b){
int i,temp,borrow = 0;
a[0] -= b;
for(i=0;i
a[i]-= borrow;
if(a[i]<0){
a[i]+=10;
borrow = 1;
}if(borrow&&i==len-1)len--;
}
}
void d(int *a,int b){
int i,r=0;
for(i=len-1;i>=0;i--){
r = r * 10 + a[i];
a[i] = r/b;
r%=b;
if(r<12&&i==0)len--;
}
if(!a[len-1])len--;
}
公式不是((n2-1) * n2) / 12嗎?
檢查過了
是你的程式問題
有BUG
減法借位忘記歸零
...謝謝^^過了