
Given DEC number a,b. Please figure out how many times carry operations will happen.
From BNUOJ/北师大程序设计竞赛热身赛第一场
Problem Description
ProblemUrl
Given DEC number a,b. Please figure out how many times carry operations will happen.
Example:
122 8: Carry operation will happen once.–> 2+8=10 will cause a carry operation.
Sample Input:
123 456
555 555
123 594
0 0
Sample Output:
No carry operation.
3 carry operations.
1 carry operation.
TIPS:There will be several input cases, if a==b==0, terminate the program.
Problem Analysis
It is a simple simulation problem. We all know the artificial add operation(High-accuracy or Big integer calculating). We can just use that way to solve the problem.
AC CODE
#include <iostream>
using namespace std;
int a[200];
int b[200];
int A,B;
int lena,lenb;
inline void parse(){
int cur=0;
while(A){
a[++cur]=A%10;
A/=10;
}
lena=cur;
cur=0;
while(B){
b[++cur]=B%10;
B/=10;
}
lenb=cur;
}
int main(){
while(cin>>A>>B){
if(A==B && A==0) break;
lena=lenb=0;
parse();
int addb,adda,t;
int cnt=0;
bool flag=false;
for(int i=1;i<=lena || i<=lenb;i++){
if(i>lenb) addb=0;
else addb=b[i];
if(i>lena) adda=0;
else adda=a[i];
t=adda+addb;
if(flag){
t+=1;
flag=false;
}
if(t>=10){
cnt++;
flag=true;
}
}
if(cnt==0) cout<<"No carry operation."<<endl;
else if(cnt==1) cout<<"1 carry operation."<<endl;
else cout<<cnt<<" carry operations."<<endl;
}
return 0;
}




近期评论