POJ 2562Primary Arithmetic

此题是小学算术,给你两个数要求你输出两数相加时进位的次数

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#include<limits.h>
using namespace std;
int f(int a[],int b[])
{
	int ans =0;
	for(int i=1; i<= b[0]; i++)
	{
		b[i]+= a[i]; 
		if(b[i]> 9)	
		{
			b[i+1]++;
			b[i]-= 10;
			ans++;
		}
	}
	return ans;	
}
int main()
{
	int a,b;
	while(scanf("%d %d",&a,&b)!=EOF&&a+b)
	{
		int l1,l2;
		int t1[20],t2[20];
		memset(t1,0,sizeof(t1));
		memset(t2,0,sizeof(t2));
		l1= 0;
		l2= 0;
		int k= a;
		while(k)
		{
			l1++;
			t1[l1]= k%10;
			k/= 10;
		}
		t1[0]= l1;
		k= b;
		while(k)
		{
			l2++;
			t2[l2]= k%10;
			k/= 10;
		}
		t2[0]=l2;	
		int ans;
		if(t1[0]> t2[0])
			ans= f(t2, t1);
		else
			ans= f(t1,t2);
		if(ans>1)
			printf("%d carry operations.\n",ans);
		else if(ans==1)
			printf("1 carry operation.\n");
		else
			printf("No carry operation.\n");		
	}
return 0;
}

特么注意输出的时候 英语之中的单复数  结果是1的时候没S 。

你可能感兴趣的:(poj)