PTA练习题:特立独行的幸福
今天C语言练习题又有一个天梯赛的题,想了很久都没思路,通过百度和自己思考终于解决了,想把问题总结一下,方便后面复习
题目

对一个十进制数的各位数字做一次平方和,称作一次迭代。如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数。1 是一个幸福数。此外,例如
19 经过 1 次迭代得到 82,2 次迭代后得到 68,3 次迭代后得到 100,最后得到 1。则 19
就是幸福数。显然,在一个幸福数迭代到 1 的过程中经过的数字都是幸福数,它们的幸福是依附于初始数字的。例如 82、68、100
的幸福是依附于 19
的。而一个特立独行的幸福数,是在一个有限的区间内不依附于任何其它数字的;其独立性就是依附于它的的幸福数的个数。如果这个数还是个素数,则其独立性加倍。例如
19 在区间[1, 100] 内就是一个特立独行的幸福数,其独立性为 2×4=8。

另一方面,如果一个大于1的数字经过数次迭代后进入了死循环,那这个数就不幸福。例如 29 迭代得到
85、89、145、42、20、4、16、37、58、89、…… 可见 89 到 58 形成了死循环,所以 29 就不幸福。

本题就要求你编写程序,列出给定区间内的所有特立独行的幸福数和它的独立性。

输入格式

输入在第一行给出闭区间的两个端点:1<A<B≤10 ^4

输出格式

按递增顺序列出给定闭区间 [A,B] 内的所有特立独行的幸福数和它的独立性。每对数字占一行,数字间以 1 个空格分隔。

如果区间内没有幸福数,则在一行中输出 SAD。

输入样例1

10 40

输出样例1

19 8
23 6
28 3
31 4
32 3

注意:样例中,10、13 也都是幸福数,但它们分别依附于其他数字(如 23、31 等等),所以不输出。其它数字虽然其实也依附于其它幸福数,但因为那些数字不在给定区间 [10, 40] 内,所以它们在给定区间内是特立独行的幸福数。
输入样例 2

110 120

输出样例2

SAD

我的代码

#include <stdio.h>
#include <string.h>
int m,n,c;
int num[10001],flag[10001],pri[10001];
int get(int d) {if(num[d] != -1) return num[d];num[d] = -2;int t = d,sum = 0;while(t) {sum += (t % 10) * (t % 10);t /= 10;}t = get(sum);if(t >= 0) flag[sum] = 1;return num[d] = t == -2 ? t : t + 1;
}
int main() {memset(num,-1,sizeof(num));pri[0] = pri[1] = 1;for(int i = 2;i * i <= 10000;i ++) {if(pri[i]) continue;for(int j = i * i;j <= 10000;j += i) {pri[j] = 1;}}num[1] = 0;scanf("%d %d",&m,&n);for(int i = m;i <= n;i ++) {get(i);}for(int i = m;i <= n;i ++) {if(num[i] != -2 && !flag[i]) {printf("%d %d\n",i,num[i] * (2 - pri[i]));c ++;}}if(!c) printf("SAD");return 0;
}

PTA:特立独行的幸福相关推荐

  1. PTA习题【python】 7-5 特立独行的幸福

    题目介绍 对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得 ...

  2. 【PTA-训练day17】L2-029 特立独行的幸福 + L1-071 前世档案

    L2-029 特立独行的幸福 - 递归/模拟 + 判断素数 PTA | 程序设计类实验辅助教学平台 思路: 第一层循环是边界循环  for(int i=l;i<=r;i++) 枚举每一个i 第二 ...

  3. L2-029 特立独行的幸福 (25 分)-PAT 团体程序设计天梯赛 GPLT

    对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68, ...

  4. 【CCCC】L2-029 特立独行的幸福 (25分),模拟题,set用法

    problem L2-029 特立独行的幸福 (25分) 对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 ...

  5. 7-3 特立独行的幸福

    z作业做不出,参考网上资料自己进行修改改编的 对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 ...

  6. 【L2-029 特立独行的幸福】

    天梯赛L2-029 特立独行的幸福 题目详情: 输入样例 1: 10 40 输出样例 1: 19 8 23 6 28 3 31 4 32 3 思路: 这个题也是借鉴了网上大佬的写法 这个题是求特立独行 ...

  7. 特立独行的幸福 (25 分)

    特立独行的幸福 (25 分) 对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 ...

  8. 天梯赛L2-029 特立独行的幸福

    L2-029 特立独行的幸福 (25分) 对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 ...

  9. 7-113 特立独行的幸福 (20 分) C语言

    对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68, ...

  10. GPLT 特立独行的幸福

    对一个十进制数的各位数字做一次平方和,称作一次迭代.如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数.1 是一个幸福数.此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68, ...

最新文章

  1. 关于学习Python的一点学习总结(27->关键字参数和默认值)
  2. 分形之龙形曲线(Dragon Curve)
  3. vue传递数组对象_详解vue组件三大核心概念
  4. 关于信噪比-draft
  5. 大数据_Flink_数据处理_运行时架构7_程序结构和数据流图---Flink工作笔记0022
  6. Azure 托管镜像和非托管镜像对比
  7. 非学习的点云配准方法汇总
  8. DIV+CSS+JavaScript的简单运用
  9. LeetCode系列之【12/13.罗马字符转整数(或相反)】C++ 经验总结
  10. java 方差_方差(Variance)
  11. spring-boot文件上传限制
  12. 文件23333333
  13. 家电售后APP软件开发作用特点
  14. Unity3d开发MOBA游戏类《王者荣耀》记录(起)
  15. PHP:执行 PHP 文件
  16. 人工智能在游戏领域的应用有哪些?
  17. 基于华为云区块链服务快速部署和搭建链上应用
  18. 1. 编写函数 cal_numbers:参数为字符串,统计并返回该字符串中的英文字母、空格、数字和其它字符的个数
  19. 掌上通计算机一级考试在线安装,计算机一级掌上通
  20. 计算机基础理论优秀书籍收集

热门文章

  1. 三维重建 | 单张RGB图片生成三维网格模型
  2. 核磁谱图分析步骤_核磁共振解析图谱的步骤
  3. matlab 设计数字滤波器,基于Matlab的FIR数字滤波器设计
  4. java编写数独_简单实现java数独游戏
  5. linux 字符 拨号上网,LINUX下用ADSL拨号上网
  6. Spring Framework究竟是什么? [关闭]
  7. OutMan——Objective-C内存管理
  8. 编写jQuery插件
  9. 2、传输介质——双绞线
  10. 语速对科大讯飞,百度,思必驰,云知声的语音引擎识别结果影响对比