判断是否幸运数 c/c++ 求解答算法

输入一个无符号整数,判断该数是否为幸运数。注:从自然数序列:1,2,3,4,5,6,7,8,9,10,…中的第2项开始,隔1个取走1个,得序列:1,3,5,7,9,11,... 输入一个无符号整数,判断该数是否为幸运数。
注:从自然数序列:

 1,2,3,4,5,6,7,8,9,10,…中的第2项开始,隔1个取走1个,得序列:
   
 1,3,5,7,9,11,13,15,… 
再从其第3项开始,隔2个取走1个,得序列:
   
 1,3,7,9,13,15,19,… 
按以上规律不断继续下去,永远取不走的数称幸运数。

Input
有多组数据,每组数据占一行,为无符号整数n(n≤10000),输入最后一行是一个0,表示输入结束并且不需要处理。
Output
判断n是否为幸运数。若是,则输出:Yes,it is.否则,输出: No it isn't.
题目链接:http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=10096&courseid=0
Time Limit: 1000ms,
展开
 我来答
百度网友f3b3e02
2013-04-06 · TA获得超过2156个赞
知道小有建树答主
回答量:821
采纳率:90%
帮助的人:583万
展开全部
#include "stdio.h"
bool fun(unsigned int *d,unsigned int n,int start)
{
int j,i,k;
if(d[n-1]==10001) return false;
if(start<n)
{
i=0;j=0;
while(i<start)
{
while(d[i+j]==10001) j++;
i++;
}
for(k=i+j-1;k<n;k=k+i+j-1)
{
if(k==n) return false;
d[k]=10001;
i=0;j=0;
while(i<start)
{
while(d[i+j]==10001) j++;
i++;
}
}
return fun(d,n,start+1);
}
else
{
return true;
}
}
int main()
{
unsigned int n,d[10000];
printf("输入无符号整数n(n≤10000:");
scanf("%d",&n);
for(int i=0;i<n;i++)
d[i]=i+1;
if(fun(d,n,2))
printf("Yes,it is.");
else
printf("No it isn't. ");
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式