HDU 6463.超级无敌简单题-卡边界的暴力 (“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛)...

博客提及一道超级无敌简单题,给出了时间限制(Java/Others为2000/1000 MS)、内存限制(Java/Others为65536/65536 K),还给出了总提交数570和通过提交数274,同时标注了转载来源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

超级无敌简单题

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 570    Accepted Submission(s): 274


Problem Description
通常来说,题面短的题目一般都比较难,所以我要把题面写得很长很长。
通常来说,题面短的题目一般都比较难,所以我要把题面写得很长很长。
通常来说,题面短的题目一般都比较难,所以我要把题面写得很长很长。
鸽子数字由以下过程定义:从任何正整数开始,将数字替换为其各个数位的平方和,并重复该过程,直到该数字等于1。如果不能,则这个数字不是鸽子数。
例如7是鸽子数,因为7->49->97->130->10->1。(7*7=49,4*4+9*9=97,9*9+7*7=130....如此类推)
显然1是第一个鸽子数。
有Q个询问,每个询问给出一个数k,你需要输出第k个鸽子数。
 

 

Input
第一行一个Q,代表询问的个数(Q<=100000)
接下来Q行,每行一个数字k(k<150000)
 

 

Output
每行输出一个数,代表第k个鸽子数
 

 

Sample Input
2 1 2
 

 

Sample Output
1 7
 

 

Source
 
 
代码:
 1 //6463
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 const int maxn=150000+10;
 5 int ans[maxn];
 6 int main()
 7 {
 8     int n=0;
 9     for(int i=1;i<=1e6+4e4+5e3;i++){
10         int t=0,cnt=i;
11         while(1){
12             int a[100];
13             int h=0;
14             while(cnt){
15                 a[++h]=cnt%10;
16                 cnt/=10;
17             }
18             int ret=0;
19             for(int i=1;i<=h;i++)
20                 ret+=a[i]*a[i];
21             if(ret==1){
22                 ans[++n]=i;
23                 //cout<<n<<" "<<i<<endl;
24                 break;
25             }
26             else cnt=ret;
27             t++;
28             if(t==10) break;
29         }
30     }
31     //cout<<n<<endl;
32     int q;
33     scanf("%d",&q);
34     while(q--){
35         int x;
36         scanf("%d",&x);
37         cout<<ans[x]<<endl;
38     }
39 }

 

转载于:https://www.cnblogs.com/ZERO-/p/10580599.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值