HDU:Integer Inquiry
#include"stdio.h" #include"stdlib.h" #include"string.h" #define N 105 int a[N]; int main() { int i,j,n,n1,flag; char ch[N]; scanf("%d",&n); while(n--) { memset(a,0,sizeof(a)); //数组初始化为零 while(scanf("%s",ch),ch[0]!='0') //输入零结束 { n1=strlen(ch); for(i=n1-1,j=0;i>=0;i--) { a[j++]+=ch[i]-'0'; a[j]+=a[j-1]/10; //进位 a[j-1]%=10; //取余 } } flag=0; for(i=N-1;i>0;i--) { if(flag) printf("%d",a[i]); else if(a[i]) { printf("%d",a[i]); flag=1; } } printf("%d\n",a[0]); //输入0时应输出0,错了n多次 if(n) //输出块之间有空行 printf("\n"); } return 0; }
改版 为什么一直WA
#include"stdio.h" #include"stdlib.h" #include"string.h" #define N 105 int a[N],b[N]; int main() { int i,j,n,n1,flag; char ch[N]; scanf("%d",&n); while(n--) { memset(a,0,sizeof(a)); //数组初始化为零 while(scanf("%s",ch),ch[0]!='0') //输入零结束 { n1=strlen(ch); memset(b,0,sizeof(b)); for(i=0,j=n1-1;j>=0;j--,i++) b[i]=ch[j]-'0'; int h=0; int m; for(i=0;i<n1;i++) { m=a[i]+b[i]+h; a[i]=m%10; h=m/10; } while(h) { a[i]=h%10; n1++; h=h/10; } } flag=0; for(i=N-1;i>0;i--) { if(flag) printf("%d",a[i]); else if(a[i]) { printf("%d",a[i]); flag=1; } } printf("%d\n",a[0]); //输入0时应输出0,错了n多次 if(n) //输出块之间有空行 printf("\n"); } return 0; }
C++版本
#include<iostream> #include<cstring> using namespace std; #define N 110 int main() { int t; cin>>t; while(t--) { int sum[N]={0}; char str[N]; while(cin>>str&&str[0]!='0') { int num[N]={0}; int len=strlen(str); for(int i=0;i<len;i++) num[i]=str[len-1-i]-'0'; for(int i=0;i<N;i++) { sum[i]+=num[i]; if(sum[i]>9) { sum[i]-=10; sum[i+1]+=1; } //sum[i+1]+=(sum[i]+num[i])/10; //sum[i]=(sum[i]+num[i])%10; } } int k=N-1; while(sum[k]==0) k--; if(k<0) cout<<0; else for(;k>=0;k--) cout<<sum[k]; cout<<endl; if(t) cout<<endl; } return 0; }
#include <iostream> #include <cstring> #include <string> #include <cmath> using namespace std; const int N=105; int main() { int a[N],b[N],c,d,ou,kl; string s1,s2; getline(cin,s1); c=s1.length(); ou=0; for (int i=0;i<N;i++)//把s1h装到a[100]里 { a[N-1-i]=s1[c-1-i]-'0'; if(c-1-i<0) { a[N-1-i]=0; } } while(getline(cin,s2)&&s2!="0") { d=s2.length(); for (int k=0;k<N;k++)//把s2装到b[100]里 { b[N-1-k]=s2[d-1-k]-'0'; if(d-1-k<0) { b[N-1-k]=0; } } for (int l=N-1;l>0;l--)//做加法 { a[l]+=b[l]; if(a[l]>=10) { a[l]-=10; a[l-1]++; } } } for (int g=0;g<N;g++)//从不为零的位置开始输出到最后一位 { ou+=a[g]; if(ou!=0) cout<<a[g]; } cout<<endl; return 0; }
每天明白一点知识