Skip to content

牛客网 NC14520 有趣的数学#

目录#


1. 题目描述#

1.1. Limit#

Time Limit: C/C++ 1秒,其他语言2秒 Memory Limit: C/C++ 32768K,其他语言65536K

1.2. Problem Description#

在刚刚过去的双11,对于别人来说是一个购物的节日,然而对于CJJ来说,确是一个单身狗的光棍节,所以他只能一个人默默的刷题。

现在,CJJ学长遇到了一个数学问题,如果一个数的三次方的后两位是11,那么他将其称之为“单身数”,他知道了第一个“单身数”是71,CJJ学长想知道第 个“单身数”是多少。

1.3. Input#

输入一个正整数,表示有 组数据,每组数据包括一个整数

1.4. Output#

输出第 个“单身数”。

1.5. Sample Input#

1
1

1.6. Sample Output#

71

1.8. Source#

牛客网 NC14520 有趣的数学

2. 解读#

先枚举第 个单身数,发现其为 ,也就是一共需要大概 次的运算,可以进行暴力求解。

但是直接暴力会发现通过不了,因为 long long 的最大值为 , 也就是 ,然而,也就是 ,超出了 long long 的取值范围。

所以我们在计算三次方时要对结果取模,防止溢出。因为我们考虑的是后两位,对 取模即可。

3. 代码#

#include <iostream>
using namespace std;
const int MAXN = 1e6 + 1;
long long list[MAXN];
int main()
{
    long long count = 0, buffer = 0;
    // 先计算前1e6个单身数并存储
    for (long long i = 0;; i++) {
        buffer = ((i * i) % 100 * i) % 100;
        if (buffer % 10 == 1 && buffer / 10 % 10 == 1) {
            list[count++] = i;
            if (count >= MAXN - 1)
                break;
        }
    }
    int t, n;
    cin >> t;
    while (t--) {
        cin >> n;
        cout << list[n - 1] << endl;
    }
}

联系邮箱:curren_wong@163.com

CSDNhttps://me.csdn.net/qq_41729780

知乎https://zhuanlan.zhihu.com/c_1225417532351741952

公众号复杂网络与机器学习

欢迎关注/转载,有问题欢迎通过邮箱交流。

二维码

Back to top