数字小游戏

数字小游戏

时间: 1ms        内存:128M

描述:

游戏从一个整数S开始,只要它的位数多于1,就计算它各位的乘积,并且不断重复这个过程。比如:我们从95开始,9 × 5 = 45,45不是1位数,继续4 × 5 = 20.继续2 × 0 = 0.至此只有1位数,结束。
再比如:如果从396开始
3 × 9 × 6 = 162
1 × 6 × 2 = 12
1 × 2 = 2
最后得到2

输入:

每行开始1个整数,表示起始值。最后以0结束。

输出:

游戏从开始到结束的序列,从起始值开始。

示例输入:

95
396 
28 
4 
40
0

示例输出:

95 45 20 0
396 162 12 2
28 16 6
4
40 0

提示:

参考答案(内存最优[748]):

#include<stdio.h>
int main(){
	int add,num;
	while(scanf("%d",&num)!=EOF && num!=0){
		printf("%d",num);
		while(num/10){
			add =1;
			while(num!=0){
				add *= num%10;
				num = num/10;
			}
			printf(" %d",add);
			num = add;
		}
		printf("\n");
	}
	printf("\n");
	return 0;
}

参考答案(时间最优[0]):



#include <iostream>

using namespace std;


int main() {
    while (true) {
        int v;
        cin >> v;
        if (v == 0) break;
        cout << v;                     // initial number; no space
        while (v > 9) {
            // compute the product
            int product=1;
            while (v > 0) {
                product *= v % 10;
                v /= 10;
            }
            cout << " " << product;    // note leading space
            v = product;
        }
        cout << endl;
    }
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注