牛客网 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#
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
CSDN:https://me.csdn.net/qq_41729780
知乎:https://zhuanlan.zhihu.com/c_1225417532351741952
公众号:复杂网络与机器学习
欢迎关注/转载,有问题欢迎通过邮箱交流。