allsight
c語言 · 高精度加法
問題描述
輸入兩個整數a和b,輸出這兩個整數的和。a和b都不超過100位。
演算法描述
由於a和b都比較大,所以不能直接使用語言中的標準資料型別來儲存。對於這種問題,一般使用陣列來處理。
定義乙個陣列a,a[0]用於儲存a的個位,a[1]用於儲存a的十位,依此類推。同樣可以用乙個陣列b來儲存b。
計算c = a + b的時候,首先將a[0]與b[0]相加,如果有進製產生,則把進製(即和的十位數)存入r,把和的個位數存入c[0],即c[0]等於(a[0]+b[0])%10。然後計算a[1]與b[1]相加,這時還應將低位進上來的值r也加起來,即c[1]應該是a[1]、b[1]和r三個數的和.如果又有進製產生,則仍可將新的進製存入到r中,和的個位存到c[1]中。依此類推,即可求出c的所有位。
最後將c輸出即可。
輸入格式
輸入包括兩行,第一行為乙個非負整數a,第二行為乙個非負整數b。兩個整數都不超過100位,兩數的最高位都不是0。
輸出格式
輸出一行,表示a + b的值。
樣例輸入
20100122201001221234567890
2010012220100122
樣例輸出
20100122203011233454668012
#include#includeint main()
while(i>=0)
while(j>=0)
if(r)
for(int i=k-1;i>=0;i--)
return 0;
}
//高精度減法(兩個數)
#include #include #include using namespace std;
#define max 100
#define maxn(a,b) (a)>(b)?(a):(b)
char ch1[max+10];
char ch2[max+10];
int an1[max+10];
int an2[max+10];
int subtract(int *a1,int len1,int *a2,int len2);
int main()
} return 0;}
int subtract(int *a1,int len1,int *a2,int len2)
if(i<0)
return 0;
for(i=0;i#include #include #include using namespace std;
#define max 200
char ch1[max+10];
char ch2[max+10];
int an1[max];
int an2[max];
int an[2*max];
void multiply(int *an1,int *an2);
int main()
return 0;}
void multiply(int *an1,int *an2)
}
#include #include #include #include using namespace std;
#define max 200
char ch1[max+10];
char ch2[max+10];
int an1[max+10];
int an2[max+10];
int an[max+10];
int n;
int substract(int *a1,int *a2,int len1,int len2);
int main()
len1=strlen(ch1);
len2=strlen(ch2);
if(len1=0;i--)
an1[j++]=ch1[i]-'0';
for(i=len2-1,j=0;i>=0;i--)
an2[j++]=ch2[i]-'0';
int ntime=len1-len2;
if(ntime>0)
for(i=0;i<=ntime;i++)
}for(i=max+9;i>=0;i--)
if(an[i])
break;
if(i>=0)
for( ;i>=0;i--)
printf("%d",an[i]);
else
printf("0");
printf("\n");
} return 0;}
int substract(int *a1,int *a2,int len1,int len2)
//高精度除法
#include#includeusing namespace std;
int a[2000];
int b[2000];
int c[2000];
int sum[2000];
void pplus(int *a,int *c)
}void cheng(int *a,int c)
}int main()
bool flag=0;
for(int i=1000;i>=1;i--)
}
P1009 階乘之和
提交該題 討論 題解記錄 用高精度計算出s 1!2!3!n!n 50 其中 表示階乘,例如 5!5 4 3 2 1。輸入格式 乙個正整數n。輸出格式 乙個正整數s,表示計算結果。輸入樣例 1 3 輸出樣例 1 9 include include using namespace std int a 1...
題解 P1009 階乘之和
p1009 階乘之和 qaq,剛開始看完題直接立刻按照題目階乘相加寫出了程式,資料使用int型別處理,4個測試點只通過兩個。感覺應該是int型資料不夠大,存不下結果,然後換成了long long測試一遍還是不行,又換成了unsigned long long,還是不夠大,這個不行 include in...
洛谷 P1009 階乘之和
題目描述 用高精度計算出s 1 2 3 n n 50 s 1 2 3 n n 50 其中 表示階乘,例如 5 5 times 4 times 3 times 2 times 15 5 4 3 2 1。乙個正整數nn。乙個正整數ss,表示計算結果。輸入 1複製 3輸出 1複製 9分析 本來以為昨晚寫完...