【NYOJ】[1074]小学生算术

文章字数:214

问题描述

问题分析

模拟进位
刚开始想可能会忽视记录进位次数之后,真的要"进位"

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<stdio.h>
int main() {
	int a,b;
	while(scanf("%d %d",&a,&b),a!=0||b!=0) {
		int cnt=0;
		int m[6];
		m[0]=a%10;
		m[3]=b%10;
		m[1]=a/10%10;
		m[4]=b/10%10;
		m[2]=a/100;
		m[5]=b/100;
		if(m[0]+m[3]>9) {
			cnt++;
			m[1]+=m[0]+m[3]-9;
		}
		if(m[1]+m[4]>9) {
			cnt++;
			m[2]+=m[1]+m[4]-9;
		}
		if(m[2]+m[5]>9) {
			cnt++;
		}
		printf("%d\n",cnt);
	}
	return 0;
}

标程的思路是一样的
不过没用数组显得乱一些

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<stdio.h>
int main() {
	int a,b,c,d,e,f,n,m,i;
	for(;;) {
		scanf("%d%d",&n,&m);
		if(n==0&&m==0)
			return 0;
		else {
			i=0;
			a=n/100;
			b=n%100/10;
			c=n%10;
			d=m/100;
			e=m%100/10;
			f=m%10;
			if(c+f>=10) {
				i+=1;
				b+=1;
			}
			if(b+e>=10) {
				i+=1;
				a+=1;
			}
			if(a+d>=10) {
				i+=1;
			}
			printf("%d\n",i);
		}
	}
	return 0;
}

题目地址:小学生算术

该内容采用 CC BY-NC-SA 4.0 许可协议。

如果对您有帮助或存在意见建议,欢迎在下方评论交流。

加载中...