标题:请求帮忙解一下c++的算法题(新手上路)拜托了
只看楼主
莫启飞
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2021-10-13
结帖率:100%
已结贴  问题点数:20 回复次数:6 
请求帮忙解一下c++的算法题(新手上路)拜托了
若一个数的三次方的后两位是11,那么将其称之为“单身数”,现知道第一个“单身数”是71,你能算出第n个“单身数”是多少吗?
Input
输入一个正整数T(T<=100),表示有T组数据,每组数据包括一个整数n(1<=n<=1000000)
Output
输出第n个“单身数”。
Sample Input
1
1
Sample Output
71
搜索更多相关主题的帖子: 新手上路 Input 算法 请求 c++ 
2021-10-13 23:10
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
因为只有后两位才会影响到其三次方的后两位,所以“单身数”必然是以“71”结尾,以“71”结尾的必然是“单身数”

程序代码:
#include <iostream>
using namespace std;

int main( void )
{
    unsigned T;
    cin >> T;

    while( T-- )
    {
        unsigned n;
        cin >> n;

        cout << ((n-1)*100 + 71) << '\n';
    }
}
收到的鲜花
  • 莫启飞2021-10-14 21:46 送鲜花  1朵   附言:谢谢您了
2021-10-14 08:16
莫启飞
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2021-10-13
得分:0 
回复 2楼 rjsp
谢谢您了
2021-10-14 16:19
莫启飞
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2021-10-13
得分:0 
回复 楼主 莫启飞
我看见题目写的是 若一个数的三次方的后两位是11,那么将其称之为“单身数” ,然后我就写了这个错误的代码请问一下是哪里错了呢
#include<iostream>
using namespace std;
int main() {
    int n;
    //int T[100];
    //n <=(int) T;
    cin >> n;

    int index = 1;
    int i = 1;
    while(index <= 100){
        if(i*i*i % 100 == 11)
        {
            if(n == index)
                std::cout << i << std::endl;
            ++index;
        }
       ++i;
    }
    return 0;
}
2021-10-14 16:34
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
回复 4楼 莫启飞
输入不对,按题目要求,用户一次性想知道 第11个、第23个、第1000000个 数分别是什么,他先输入数量 3,然后输入 11, 23, 1000000。
而你的代码逻辑是,用户输入11,你给他第11个;用户输入23,你给他第23个;……

while(index <= 100)
100 是最大组数,也就是题目限制用户一次最多只能知道多少个数。所以若你想保留这种写法,这里应该填写的是 1000000

i*i*i % 100
题目说 n<=1000000,那 1000000*1000000*1000000 需要一个至少60bits的整型来保存它,你的int未必有这么长
收到的鲜花
  • 莫启飞2021-10-14 21:47 送鲜花  1朵   附言:谢谢您了
2021-10-14 16:49
莫启飞
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2021-10-13
得分:0 
回复 5楼 rjsp
嗯嗯嗯,请问一下这是怎么意思呀 (n-1)*100 + 71)
unsigned T; 这段代码又表示什么意思呢
2021-10-14 18:44
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
嗯嗯嗯,请问一下这是怎么意思呀 (n-1)*100 + 71)
对于 71、171、271、371、……,那它的通项式是不是 (n-1)*100 + 71 嘛

unsigned T; 这段代码又表示什么意思呢
你不会所有代码全是抄袭的吧,这跟你代码中的“int n;”一样
int n; 是定义一个名为n的int变量
unsigned T; 是定义一个名为T的unsigned变量
2021-10-15 08:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-507153-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025125 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved