結果
問題 |
No.219 巨大数の概算
|
ユーザー |
![]() |
提出日時 | 2015-05-29 23:16:27 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,059 bytes |
コンパイル時間 | 1,161 ms |
コンパイル使用メモリ | 161,668 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-07-06 11:57:02 |
合計ジャッジ時間 | 9,352 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | WA * 51 |
ソースコード
#include <bits/stdc++.h> #define FOR(i,a,b) for(int i=(a);i<(b);i++) #define REP(i,b) FOR(i,0,b) #define X real() #define Y imag() #define F first #define S second #define PB(a) push_back(a) #define BE(c) c.begin(),c.end() using namespace std; typedef long long LL; typedef pair<int,long double> pr; typedef pair<pr,int> ppr; typedef priority_queue<pr,vector<pr>,greater<pr> > PQ; typedef vector<pr> Vpr; typedef vector<LL> VI; typedef complex<LL> cld; typedef vector<cld> Vcld; typedef map<pr,int> MP; const int SIZE=100010; const LL INF=1<<28; const LL p=7+1e+9; pr power(LL A,LL B){ if(B==0) return pr(0,1); pr half=power(A,B/2); LL Z=half.F*2; long double val=half.S*half.S; if(B%2){ long double AA=A; while(AA>=10.0){ AA/=10.0; Z++; } val*=AA; } while(val>=1000.0){ val/=1000.0; Z+=3; } while(val>=10.0){ val/=10.0; Z+=1; } return pr(Z,val); } int main(){ int N; LL A,B; cin >> N; REP(i,N){ cin >> A >> B; pr ans=power(A,B); LL Z=ans.F; LL xy=ans.S*10; cout << xy/10 <<" " << xy%10 <<" " << Z << endl; } }