結果
問題 |
No.443 GCD of Permutation
|
ユーザー |
|
提出日時 | 2025-01-25 16:02:29 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,095 bytes |
コンパイル時間 | 1,351 ms |
コンパイル使用メモリ | 161,312 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2025-01-25 16:02:32 |
合計ジャッジ時間 | 2,475 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 21 WA * 7 |
コンパイルメッセージ
main.cpp: In member function ‘void oi::solve()’: main.cpp:18:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 18 | scanf("%s",str); | ~~~~~^~~~~~~~~~
ソースコード
#include<bits/stdc++.h> using namespace std; #define intt long long #define untt unsigned intt #define mk make_pair typedef pair<intt,intt>PII; typedef pair<double,double>PDD; inline intt read(){intt x=0,f=1;char ch=getchar();for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;for(;ch<='9'&&ch>='0';ch=getchar())x=x*10+ch-'0';return x*f;} inline void prin(intt x){if(x<0)putchar('-'),x=-x;if(x>9)prin(x/10);putchar(x%10+'0');return;} inline void print(intt x,intt fl){prin(x);if(fl)puts("");else printf(" ");return;} inline void frein(){freopen("1.in","r",stdin);return;} inline void freout(){freopen("1.ans","w",stdout);return;} inline intt power(intt a,intt lx,intt f){intt ans=1;while(lx){if(lx&1)ans=ans*a%f;a=a*a%f;lx>>=1;}return ans%f;} const intt N=1e6+10,INF=1e16,p=1e9+7; struct oi{ char str[N];intt a[N]; inline void solve(){ scanf("%s",str); intt len=strlen(str); intt fl=1; for(int i=1;i<len;i++){ if(str[i]!=str[i-1])fl=0; } if(fl){ cout<<str<<endl; return; } fl=1;char n=0; for(int i=0;i<len;i++){ if(str[i]=='0')continue; if(n!=str[i]&&n!=0)fl=0; n=str[i]; } for(int i=0;i<len;i++)a[i]=str[i]-'0'; n-='0';intt ans=1; if(fl){ for(int i=0;i<len;i++){ a[i+1]+=(a[i]%n)*10; a[i]/=n; }ans*=n; } while(1){ bool fl1=1; for(int i=0;i<len;i++){ if(a[i]%2==1)fl1=0; } if(fl1==0)break; for(int i=0;i<len;i++){ a[i]/=2; }ans*=2; } while(1){ intt cnt=0; for(int i=0;i<len;i++){ cnt+=a[i]; } if(cnt%3!=0){ print(ans,1); break; } for(int i=0;i<len;i++){ a[i+1]+=(a[i]%3)*10; a[i]/=3; }ans*=3; } } }T; int main(){ T.solve(); return 0; }