东华大学2020考研计算机OJ题目解答分享——进阶篇(73)

73 纯粹合数

作者: 朱凯 时间限制: 10S 章节: 字符串

问题描述 :

明明的爸爸是一位数学家,明明受他爸爸的影响从小就喜欢数学,经常向他爸爸学习或请教数学问题。

一天,明明问他爸爸什么是合数,明明的爸爸回答说:“首先,合数都是大于1的整数,其次合数是除了1和其本身外,还能被至少一个其他自然数整除的数,例如‘4’这个数,它除了能被1和4整除外,还能被2整除,因此‘4’就是合数;但是‘3’就不是合数,因为3只能被1和3这两个数整除,因此‘3’不是合数。”

聪明的明明很快就理解了他爸爸的意思,于是又接着问他爸爸:“那什么又是纯粹合数呢?”明明的爸爸接着回答说:“一个合数,去掉最高位,剩下的数是0或仍是合数;再去掉剩下的数的最高位,剩下的数还是0或合数;这样反复,一直到最后剩下的一位数仍为0或合数;我们把这样的数称为纯粹合数。

例如‘100’这个数,它能被1、2、4、5、10、20、50、100整除,因此100是个合数,我们去掉它的最高位,剩下的数是0(其实剩下的应该是00,但是前置0对一个整数来说没有意义,因此前置0被舍去,就剩下个位数上的0),因此‘100’是一个纯粹合数。有趣的是,100是最小的一个三位纯粹合数。

再例如‘104’这个数,104能被1、2、8、13、26、52、104整除,所以104是个合数;我们去掉它的最高位后剩下4,4能被1、2、4整除,所以4也是合数,所以‘104’是一个纯粹合数。

但是‘101’就不是纯粹合数,因为‘101’只能被1和101这两个数整除。”

明明对他爸爸的回答很满意,于是自己动手从100开始寻找纯粹合数,他一共找到了100个纯粹合数,调皮的明明开始反过来考爸爸了,问他爸爸能否告诉他第2个大于等于100的纯粹合数是哪个?第3个大于等于100的纯粹合数又是哪个?……明明的爸爸被这个突如其来的问题给难住了,他无法立刻回答出来,于是请求你的帮助,帮助他回答明明的这个问题。

明明的问题可以归结为:根据一个正整数n,求出从100开始从小到大的第n个纯粹合数。

输入说明 :

你写的程序需要从标准输入设备(通常为键盘)中读入多组测试数据,每组测试数据仅占一行,每行仅包括一个正整数n(1 ≤ n ≤ 100)。每组测试数据与其后一组测试数据之间没有任何空行,第一组测试数据前面以及最后一组测试数据后面也都没有任何空行。

输出说明 :

对于每一组测试数据,你写的程序需要计算出一组相应的运算结果,并将每组运算结果依次写入到标准输出设备(通常为启动该程序的文本终端,例如Windows中的命令行终端)中。每组运算结果为一个整数,即从100开始从小到大的第n个纯粹合数。每组运算结果单独形成一行数据,其行首和行尾都没有任何空格,每组运算结果与其后一组运算结果之间没有任何空行,第一组运算结果前面以及最后一组运算结果后面也都没有任何空行。

输入范例 :

10
2
1

输出范例 :

124
104
100

解答思路:

处理字符串一定要灵活使用sscanf和sprintf。

AC代码

#include <cstdio>
#include <cstring>

int he(int n)
{
	for(int i=2;i<n;i++)
	{
		if(n%i==0)
		return 1;
	}
	return 0;
}

int purehe(int n)
{
	char a[10];
	memset(a,0,sizeof(a));
	sprintf(a,"%d",n);

	int len=strlen(a);				//位数 
	int i=0;

	while(len--)
	{
		int num;
		sscanf(a,"%d",&num);
		if(num!=0&&he(num)==0)
		{
			return 0; 
		}
		a[i++]='0';
	}
	return 1;	
}

int main(){
	int n;
	while(~scanf("%d",&n))
	{
		int count=0;
		for(int i=100;;i++)
		{
			if(purehe(i))
			{
				count++;
			}
			if(count==n)
			{
				printf("%d\n",i);
				break;
			}
		}
		
		
		
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 东华大学计算机学院oj最后70道题是计算机学院学生们在课程中所遇到的挑战和机遇。这些题目涵盖了计算机科学和技术的不同领域和方向,需要学生们具备扎实的知识基础和解决问题的能力。 这70道题可以分为多个类别,包括数据结构与算法、数据库系统、网络与通信、人工智能与机器学习等。其中数据结构与算法类题目需要学生们掌握常见的数据结构和算法,如链表、树、排序、查找等,以及各种经典算法的应用,如动态规划、贪心算法等。数据库系统类题目要求学生们熟悉数据库设计和管理的基本原理,包括表的建立、查询语句的优化等。网络与通信类题目涉及到计算机网络的基本原理和协议,要求学生们理解网络层次结构、IP地址分配、路由协议等。人工智能与机器学习题目则需要学生们具备一定的数学基础和统计学知识,能够理解和实现机器学习算法,如线性回归、逻辑回归、决策树等。 解答这70道题目需要学生们进行思路分析、问题拆解、编程实现等一系列步骤。在解答过程中,学生们将面临各种技术挑战和困难,如算法优化、数据处理、并发编程等。同时,他们也会收获到解决问题的成就感和技术提升的经验。 东华大学计算机学院oj最后70道题是学生们在计算机学科学习中的一个重要里程碑,它们代表了学生们对计算机科学技术的全面掌握和应用能力的提升。通过解答这些题目,学生们将进一步巩固和扩展自己的计算机专业知识,培养独立思考和解决问题的能力,为未来的职业发展打下坚实的基础。 ### 回答2: 东华大学计算机学院oj最后70道题包括了计算机学院的各个专业方向的知识点和实际应用题。这些题目涉及到计算机编程、算法、数据结构、操作系统、数据库、网络等方面的内容。 在计算机编程方面,可能会涉及到一些常见的编程语言,如C、C++、Java等,要求学生使用所掌握的编程语言进行编程练习和问题解决。这能帮助提高学生的编程实践能力和解决实际问题的能力。 在算法和数据结构方面,可能会涉及到一些经典的算法问题,如排序算法、查找算法、图算法等,要求学生掌握这些算法的原理和实现,并能够灵活运用于不同场景。 在操作系统方面,可能会涉及到一些操作系统的基本原理和概念,如进程管理、内存管理、文件系统等,要求学生了解操作系统的工作原理和实际应用。 在数据库方面,可能会涉及到一些数据库的基本操作和查询语言,如SQL语言,要求学生掌握数据库的基本概念和操作,并能够进行简单的数据存储和查询。 在网络方面,可能会涉及到一些网络协议和网络应用,如TCP/IP协议、HTTP协议、Web开发等,要求学生了解网络的基本原理和实现,并能够进行简单的网络编程和应用开发。 总之,东华大学计算机学院oj最后70道题涵盖了计算机学院各个专业方向的知识点和应用题,通过解答这些题目,学生可以巩固和拓展自己的专业知识,并提高解决实际问题的能力。 ### 回答3: 东华大学计算机学院oj最后70道题,是计算机学院为培养学生计算机编程能力和算法解决问题的能力而设计的。这些题目的难度相对较高,需要学生有扎实的编程基础和算法知识。题目涵盖了数据结构、算法设计与分析、计算机网络等多个方向。学生需要通过编程语言编写代码,并根据题目要求设计算法,并在给定的时间内尽可能完成算法的实现。通过解答这些题目,学生不仅可以提升自己的编程能力,还可以培养自己的逻辑思维、问题分析和解决问题的能力。 在解答这些题目的过程中,学生需要独立思考,分析问题的本质和要求,并设计出合适的算法和编程代码。通过多次实践,学生可以提高自己的编程速度和算法设计能力,不断完善自己的编程技巧。同时,解答这些题目也培养了学生的团队合作能力,因为在解决复杂问题时,往往需要多人共同协作,共同完成任务。 总之,东华大学计算机学院oj最后70道题对于计算机学生的学习和成长是非常有益的。它不仅可以提高学生的编程能力和算法设计能力,还可以锻炼学生的团队合作和解决问题的能力。通过不断解答这些题目,学生可以不断地完善自己的技能,为今后的学习和工作打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值