結果
問題 | No.251 大きな桁の復習問題(1) |
ユーザー |
![]() |
提出日時 | 2015-07-31 20:41:29 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 4 ms / 5,000 ms |
コード長 | 1,037 bytes |
コンパイル時間 | 610 ms |
コンパイル使用メモリ | 70,512 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-12-17 17:23:56 |
合計ジャッジ時間 | 1,257 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 |
ソースコード
#include<iostream>#include<cstdio>#include<vector>#include<queue>#include<map>#include<set>#include<string>#include<algorithm>#include<functional>using namespace std;#define FOR(i,a,b) for (int i=(a);i<(b);i++)#define RFOR(i,a,b) for (int i=(b)-1;i>=(a);i--)#define REP(i,n) for (int i=0;i<(n);i++)#define RREP(i,n) for (int i=(n)-1;i>=0;i--)#define INF 1<<30#define MP make_pair#define mp make_pair#define pb push_back#define PB push_back#define DEBUG(x) cout<<#x<<": "<<x<<endl#define ll long long#define ull unsigned long long#define MOD 129402307ll mpow(ll n,ll m){if(n==0){ if(m==0) return 0; return 0;}if(m==0) return 1;if(m==1) return n%MOD;ll ans = mpow(n,m/2);ans=(ans*ans)%MOD;if(m%2) ans=(ans*n)%MOD;return ans%MOD;}int main(){cin.tie(0);ios::sync_with_stdio(false);string s1,s2;cin>>s1>>s2;ll n=0,m=0;REP(i,s1.size()) n = (n*10+s1[i]-'0')%MOD;REP(i,s2.size()) m = (m*10+s2[i]-'0')%(MOD-1);if(s2.size()==1 && m==0) {cout<<1<<endl;return 0;}cout<<mpow(n,m)%MOD<<endl;}