3 条题解
-
0
#include<stdio.h> int n; long long m; long long ksm(long long m) { long long sum = 2; long long p = 1; while ((p * 2)< m) { sum = (sum * sum) % 1000000; p *= 2; } if (p != m) { m = m - p; sum = (ksm(m) * sum) % 1000000; } return sum; } int main() { scanf("%d", &n); while (n --) { scanf("%lld", &m); printf("%lld\n", ksm (m) - 1); m = 0; } return 0; }
-
0
#include<iostream> #include<vector> #include<algorithm> #include <bits/stdc++.h> using namespace std; //投机取巧,找规律,数量大于62500时,每62500个数作为一个循环,保留的六位数为109376 int main() { int n; cin >> n; while (n--) { int x; cin >> x; int sum=1; if(x<62500) { while (x--) { sum *= 2; if (sum > 999999) sum %= 1000000; } cout << sum - 1 << endl; } else { x%=62500; sum=109376; while (x--) { sum *= 2; if (sum > 999999) sum %= 1000000; } cout << sum - 1 << endl; } } return 0; }
-
0
薯饼海特供(快速幂版) #include<stdio.h> int ksm(int n); int main() { int n; scanf("%d",&n); while(n--) { int m; scanf("%d",&m); long long sum=ksm(m); printf("%lld\n",sum-1); } } int ksm(int n) { long long ans=1; long long a=2; while(n!=0) { if(n%2!=0) { ans=ans*a%1000000; } a=(a*a)%1000000; n/=2; } return ans; }```
- 1
信息
- ID
- 156
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 421
- 已通过
- 130
- 上传者