幸运数的定义及其判断

幸运数的定义与判断


前言

前几天作为我校一场比赛的压轴题出场,但可以通过骗分得到可观的分数,本人所用方法虽不是骗分,但本质上也是骗过系统得分。

  • 原题链接:牛客网幸运数
  • 幸运数的定义
    1、对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。
    2、然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
    3、如果这个过程 结果为 1,那么这个数就是幸运数。

e.g:

19–>1,9
1²+9²=82
82–>8,2
8²+2²=68
68–>6,8
6²+8²=100
100–>1,0,0
1²+0²+0²=1
此时和为1,无需再往下运算,可认为19为幸运数

判断思路
1.在输入相应的n值后,利用while循环以及计数器算出该数为几位数
2.利用数组a[some]存放该数的每一位
3.通过for循环将此时的各位数平方求和,同时讲该值赋给n,让n进入下一次循环(在赋给n的同时定义的求和sum也要清零
4.

  • 在每次循环结束前判断n是否为1,若为1则停止循环,输出true
  • 若不为幸运数,则需要在进行无数次循环后跳出循环,所以我们要引入新的计数器cnt2来记录循环次数,在计数器达到某一特定值时选择终止循环,并输出false,该方法仅适用于一些数比较小的情况

二、使用步骤

1.引入库

#include <stdio.h>

2.读入数据

代码如下:

#include <stdio.h>
int a[1000];
int main ()
{
	int n;
	scanf("%d",&n);
	int cnt = 0,cnt2 = 0;
	int sum = 0;
	while(n != 0)
	{
		cnt2++;
		while(n!=0)
		{
			a[cnt++] = n%10;
			n /= 10;
		}
		int i;
		for(i =0;i < cnt;++i)
		{
			sum += a[i]*a[i];
		}
		n = sum;
		sum = 0;
		cnt = 0;
		if( n == 1)
		{
			printf("true");
			break;
		}
		if(cnt2==30)
		break;
	}
	if(cnt2==30)
	printf("false");
}

总结

通过骗过系统的测试点来得到分,虽无耻,但有用

胸针骗过世界来到石头门线,我骗过系统拿到满分,本质不是一样的嘛

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涅槃豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值