結果
| 問題 |
No.443 GCD of Permutation
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-01-25 15:52:19 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,046 bytes |
| コンパイル時間 | 1,447 ms |
| コンパイル使用メモリ | 161,408 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2025-01-25 15:52:22 |
| 合計ジャッジ時間 | 2,777 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 WA * 1 |
| other | AC * 17 WA * 11 |
コンパイルメッセージ
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];
}
if(fl){
printf("%c\n",n);
return;
}
for(int i=0;i<len;i++)a[i]=str[i]-'0';
intt ans=1;
while(1){
bool fl1=1,fl2=1;
intt cnt=0;
for(int i=0;i<len;i++){
cnt+=a[i];
if(a[i]%2==1)fl1=0;
}
if(cnt%3!=0)fl2=0;
if(fl1==0&&fl2==0){
print(ans,1);return;
}
if(fl1){
for(int i=0;i<len;i++){
a[i]/=2;
}ans*=2;
}
if(fl2){
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;
}