UVA13216-Problem with a ridiculously long name【过长省略】 题解
MINECRAFT_eternal · · 题解
水题
题目传送门
题目分析
很明显,这是一道找规律的题。
我们知道,如果
既然这是一个超大数,那么肯定有自己的规律,毕竟题目只需要输出结果最多后两位。
那么我们来打表找一找规律吧!
| 结果 | |
|---|---|
| 0 | 1 |
| 1 | 66 |
| 2 | 4356 |
| 3 | 287496 |
| 4 | 18974736 |
| 5 | 1252332576 |
| 6 | 82653950016 |
| 7 | 5455160701056 |
| 8 | 360040606269696 |
| 9 | 23762680013799936 |
| 10 | 1568336880910795776 |
到这里,我们可以发现,除了
那么,我们可以用
于是我们通过取余发现:
- 余数为
2 时,答案倒数第二位是5 ; - 余数为
3 时,答案倒数第二位是9 ; - 余数为
4 时,答案倒数第二位是3 ; - 余数为
0 时,答案倒数第二位是7 ; - 余数为
1 时,答案倒数第二位是1 ;
当然答案的个位全是
AC Code
#include<bits/stdc++.h>
using namespace std;
int t;
string n; //用字符串
int main(){
scanf("%d",&t);
while(t--){
cin>>n;
if(n=="0"||n=="1"){ //注意0,1特判!
if(n=="0") //66^0=1
puts("1");
else //66^1=66
puts("66");
continue;
}
int x=n[n.size()-1]-'0'; //取n的最后一位数并转换成数字
//以下依次根据情况判断
if(x%5==2)
puts("56");
if(x%5==3)
puts("96");
if(x%5==4)
puts("36");
if(x%5==0)
puts("76");
if(x%5==1)
puts("16");
}
return 0;
}