问题 B : 郑厂长系列故事——逃离迷宫
可以不用数组存储数据,直接在输入的时候处理一下就好了。
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int t;
cin >> t;
while(t--)
{
int n;
cin>>n;
int ans = 0,tmp=0;;
for( int i = 0; i < n;++i)
{
scanf("%d",&ans);
ans = ans - tmp;
tmp = ans;
}
if( ans == 0)
puts("yeah~ I escaped ^_^");
else
puts("I will never go out T_T");
}
return 0;
}
问题 E : 2^x mod n = 1
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int n;
while(~scanf("%d",&n))
{
if( n&1 &&n>1)// n&1 位运算 判定 n 是否为奇数
{
int s=1,x;
for(x=1;;++x)
{
s=s*2%n;
/*
假定输入的 n 为 五:
n:5
x=1 --> s = 1*2%5 -> s=2
x=2 --> s = 2*2%5 -> s=4
x=3 --> s = 4*2%5 -> s=8%5= 3
x=4 --> s = 3*2%5 -> s-> 8*2 - 5*2 -> 3*2
*/
if(s==1)
{
printf("2^%d mod %d = 1\n",x,n);break;
}
}
}
else
printf("2^? mod %d = 1\n",n);
/*
欧拉定理是这样的:
如果a和m互质且a<m,设x为欧拉函数的值,则a^x%m=1,
因此在本题中,只要所给的数为奇数,
即和2互质,则一定存在解,再暴力就可以了
*/
}
return 0;
}