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;
} 
相关推荐
xb11323 分钟前
数据结构——堆(C语言)
c语言·数据结构·算法
独正己身20 分钟前
代码随想录day3
数据结构·c++·算法
Hunter_pcx21 分钟前
[C++技能提升]类注册
c++·人工智能
IU宝1 小时前
vector的使用,以及部分功能的模拟实现(C++)
开发语言·c++
Xiao Xiangζั͡ޓއއ1 小时前
程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图<1>
c语言·开发语言·程序人生·学习方法·改行学it
汪款学嵌入式2 小时前
C语言常用字符串处理函数
c语言
Hunter_pcx2 小时前
[C++技能提升]插件模式
开发语言·c++
左手の明天2 小时前
【C/C++】C++中使用vector存储并遍历数据
c语言·开发语言·c++
PaLu-LI2 小时前
ORB-SLAM2源码学习:Initializer.cc(13): Initializer::ReconstructF用F矩阵恢复R,t及三维点
c++·人工智能·学习·线性代数·ubuntu·计算机视觉·矩阵
呆呆珝2 小时前
RKNN_C++版本-YOLOV5
c++·人工智能·嵌入式硬件·yolo