ZCMU OJ 5217: 翻纸牌

ZCMU OJ 5217: 翻纸牌,第1张

题目描述

五年级一班全体学生做一个游戏,有 n 张纸牌,每张纸牌上分别标注着 1,2,3,4,⋯,n 个数字,初始时纸牌数字面朝上。


全班同学先将 1 的倍数的纸牌翻过来,然后再将 2 的倍数的纸牌再翻过来,一直翻到 n 的倍数的纸牌。


统计翻到最后数字面向下的纸牌分别是哪些?

例如,有 1,2,3 三张纸牌,开始时纸牌数字面朝上,第一次翻转 1 的倍数,将所有序号为 1 的倍数的纸牌翻转;第二次翻转 2 的倍数,将所有序号是 2 的倍数的纸牌再翻转;第三次翻转 3 的倍数,将所有序号是 3 的倍数纸牌再翻转,翻牌到此结束。


最后数字面向下的纸牌是序号为 1 的那张。


输入

输入第一行输入数字为 n,表示有 n 张纸牌 (1≤n≤1000000000)。


输出

输出数字面向下的纸牌数字。


在同一行输出,两个数字之间用一个空格隔开。


样例输入

3

样例输出

1

题目可以理解为输出n以内的平方数。


解析:

设一个数 x < = n , i 从 1 到 n 。


x 若为 i 的倍数则翻面,那么只要求 x 的因子个数即可。


已知平方数的因子为奇数个,因此纸牌会向下,所以只要输出平方数即可。


#include
#include
int main()
{
	int n;
	scanf("%d",&n);
	printf("1");
	for(int i=2;i<=sqrt(n);i++)
		printf(" %d",i*i);
	return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/607161.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-14
下一篇 2022-04-14

发表评论

登录后才能评论

评论列表(0条)

保存