1117 数字之王


solution

  • 判断现有数字是否全为个位数
    • 全为个位数,找出出现次数最多的数字,并首行输出最多出现次数,第二行输出所有出现该次数的数值
    • 不全为个位数
      • 若当前位数值为0,无需处理
      • 若当前位数值非0,则每位立方相乘,并把结果个位和相加更新为当前位新数值
cpp 复制代码
#include<iostream>
using namespace std;
int n1, n2, flag[10] = {0}, a[1001], maxn = -1, judge = 0, first = 1, d;
int main(){
	scanf("%d%d", &n1, &n2);
	for(int i = n1; i <= n2; i++){
		a[i] = i;
	}
	if(n2 > 9) judge = 1;
	while(judge){
		judge = 0;
		for(int i = n1; i <= n2; i++){
			int t1 = 1, t2 = 0, t = a[i];
			if(t == 0) continue;
			while(t){
				d = t % 10;
				t /= 10;
				t1 *= d * d * d;
			}
			while(t1){
				d = t1 % 10;
				t1 /= 10;
				t2 += d;
			}
			a[i] = t2;
			if(t2 > 9) judge = 1;
		}
	}
	for(int i = n1; i <= n2; i++){
		flag[a[i]]++;
	}
	for(int i = 0; i < 10; i++){
		if(flag[i] > maxn) maxn = flag[i];
	}
	printf("%d\n", maxn);
	for(int i = 0; i < 10; i++){
		if(flag[i] == maxn){
			if(first) first = 0;
			else printf(" ");
			printf("%d", i);
		}
	}
	return 0;
} 

or

cpp 复制代码
#include<iostream>
using namespace std;
int n1, n2, flag[10] = {0}, a[1001], maxn = -1, judge = 0, first = 1, d;
int main(){
	scanf("%d%d", &n1, &n2);
	for(int i = n1; i <= n2; i++) a[i] = i;
	if(n2 > 9) judge = 1;
	while(judge){
		judge = 0;
		for(int i = n1; i <= n2; i++){
			int t1 = 1, t2 = 0, t = a[i];
			if(t == 0) continue;
			while(t){
				d = t % 10;
				t /= 10;
				t1 *= d * d * d;
			}
			while(t1){
				d = t1 % 10;
				t1 /= 10;
				t2 += d;
			}
			a[i] = t2;
			if(t2 > 9) judge = 1;
		}
	}
	for(int i = n1; i <= n2; i++){
		flag[a[i]]++;
		if(flag[a[i]] > maxn) maxn = flag[a[i]];
	}
	printf("%d\n", maxn);
	for(int i = 0; i < 10; i++){
		if(flag[i] == maxn){
			if(first) first = 0;
			else printf(" ");
			printf("%d", i);
		}
	}
	return 0;
} 
相关推荐
林辞忧2 分钟前
算法修炼之路之滑动窗口
算法
￴ㅤ￴￴ㅤ9527超级帅12 分钟前
LeetCode hot100---二叉树专题(C++语言)
c++·算法·leetcode
liuyang-neu13 分钟前
力扣 简单 110.平衡二叉树
java·算法·leetcode·深度优先
penguin_bark20 分钟前
LCR 068. 搜索插入位置
算法·leetcode·职场和发展
_GR39 分钟前
每日OJ题_牛客_牛牛冲钻五_模拟_C++_Java
java·数据结构·c++·算法·动态规划
凯子坚持 c41 分钟前
C语言复习概要(三)
c语言·开发语言
ROBIN__dyc1 小时前
表达式
算法
无限大.1 小时前
c语言200例 067
java·c语言·开发语言
无限大.1 小时前
c语言实例
c语言·数据结构·算法
Death2001 小时前
Qt 中的 QListWidget、QTreeWidget 和 QTableWidget:简化的数据展示控件
c语言·开发语言·c++·qt·c#