E. Unsolvable
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Consider the following equation:
Let's find all integer z (z > 0), for which this equation is unsolvable in positive integers. The phrase "unsolvable in positive integers" means that there are no such positive integers x and y (x, y > 0), for which the given above equation holds.
Let's write out all such z in the increasing order: z1, z2, z3, and so on (zi < zi + 1). Your task is: given the number n, find the number zn.
Input
The first line contains a single integer n (1 ≤ n ≤ 40).
Output
Print a single integer — the number zn modulo 1000000007 (109 + 7). It is guaranteed that the answer exists.
Sample test(s)
input
1
output
1
input
2
output
3
input
3
output
15
代码:
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#define mod 1000000007
using namespace std;
typedef long long LL;
LL n;
LL a[45]={0,2,3,5,7,13,17,19,31,61,89,107,127,521,607,
1279,2203,2281,3217,4253,4423,9689,9941,
11213,19937,21701,23209,44497,86243,
110503,132049,216091,756839,859433,
1257787,1398269,2976221,3021377,6972593,13466917,20996011};
LL ll(LL x,LL k)
{
LL b=1;
while(k>0)
{
if(k&1)
b=(b*x)%mod;
x=(x*x)%mod;
k>>=1;
}
return b;
}
int main()
{
while(~scanf("%lld",&n))
{
printf("%lld\n",ll(2,a[n]-1)-1);
}
return 0;
}