【bzoj 1754】【POJ - 2389 】Bull Math (高精度运算)
題干:
Bulls are so much better at math than the cows. They can multiply huge integers together and get perfectly precise answers ... or so they say. Farmer John wonders if their answers are correct. Help him check the bulls' answers. Read in two positive integers (no more than 40 digits each) and compute their product. Output it as a normal number (with no extra leading zeros).?
FJ asks that you do this yourself; don't use a special library function for the multiplication.
Input
* Lines 1..2: Each line contains a single decimal number.
Output
* Line 1: The exact product of the two input lines
Sample Input
11111111111111 1111111111Sample Output
12345679011110987654321解題報告:
? ? ? 好多錯誤啊一開始寫的時候。就是算個大數乘法。
AC代碼:
#include<iostream> #include<cstdio> #include<cstring> using namespace std;const int MAX =1000 + 5 ; char s1[MAX],s2[MAX]; int a[MAX],b[MAX],ans[MAX]; int len1,len2; int p,c;//p代表當前位置,c代表進位 int main() { // freopen("in.txt","r",stdin);scanf("%s",s1);scanf("%s",s2);len1=strlen(s1);len2=strlen(s2);//for(int i = 1; i<=len1; i++) {a[len1-(i-1)]=s1[i-1]-'0';}for(int i = 1; i<=len2; i++) {b[len2-(i-1)]=s2[i-1]-'0';} // for(int i = len1; i>=1; i--) printf("%d",a[i]); // printf("\n"); // for(int i = len2; i>=1; i--) printf("%d",b[i]); // printf("\n");for(int i = 1; i<=len2; i++) {for(int j = 1; j<=len1; j++) {ans[i+j-1] += b[i]*a[j];} }for(int i = 1; i<=len1+len2; i++) {p=i;if(ans[i]<=9) continue; // c=ans[i]/10; // while(c>0) { // ans[++p] += c; // ans[p-1]=ans[p-1]%10; // c= ( c+ans[p] )/10; // // }while(ans[i]>9) {ans[i]-=10;ans[i+1]++;} }// printf("p = %d\n",p);for(int i = len1+len2; i>=1; i--) {if(ans[i]!=0) {p=i;break;}}for(int i = p; i>=1; i--) {printf("%d",ans[i]);}printf("\n");return 0 ;} //bzoj 1754 [Usaco2005 qua]Bull Math//11111111111111//1111111111總結
以上是生活随笔為你收集整理的【bzoj 1754】【POJ - 2389 】Bull Math (高精度运算)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 刘慈欣科幻大作改编 游族网络:《三体》I
- 下一篇: 安卓最强芯第二代骁龙8加持 小米13曝光