题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2101
题意:判断两输相加是不是86的倍数;
思路:直接算就可以;
代码:
1 #include<stdio.h> 2 3 int main() 4 { 5 int a,b; 6 while(scanf("%d%d",&a,&b)!=EOF) 7 { 8 if((a+b)%86==0) 9 printf("yes\n"); 10 else 11 printf("no\n"); 12 } 13 return 0; 14 }
之所以写这个博客是因为:把这个题加一个条件(两个数都非常大,甚至超出long long)就可以让这个题变成大数运算模拟的题(模拟加法以及模除)
注意:由于原题的数据很水,对于真正的大数模拟运算的题,该代码可能存在bug;
代码:
1 #include<cstdio> 2 #include<iostream> 3 #include<string> 4 #include<cstring> 5 6 using namespace std; 7 8 int main() 9 { 10 string a,b; 11 while(cin>>a>>b) 12 { 13 int a1[100]={0},b1[100]={0}; 14 int i,d=0,s=0; 15 for(i=a.length()-1;i>=0;i--) 16 { 17 a1[d++]=a[i]-'0'; 18 } 19 for(i=b.length()-1;i>=0;i--) 20 { 21 b1[s++]=b[i]-'0'; 22 } 23 if(d<s) 24 { 25 int t=d; 26 d=s; 27 s=t; 28 } 29 int fg=0; 30 for(i=0;i<d;i++) 31 { 32 int t=a1[i]+b1[i]+fg; 33 fg=t/10; 34 a1[i]=t%10; 35 } 36 if(fg) 37 { 38 a1[i++]++; 39 } 40 fg=0; 41 for(i=i-1;i>=0;i--) 42 { 43 int t=fg*10+a1[i]; 44 a1[i]=t/86; 45 fg=t%86; 46 } 47 if(fg==0) 48 printf("yes\n"); 49 else 50 printf("no\n"); 51 } 52 return 0; 53 }
---------------------------------------欢迎指正评论-------------------------------------