結果
問題 |
No.1632 Sorting Integers (GCD of M)
|
ユーザー |
![]() |
提出日時 | 2021-07-30 21:21:50 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,211 bytes |
コンパイル時間 | 4,489 ms |
コンパイル使用メモリ | 255,580 KB |
最終ジャッジ日時 | 2025-01-23 11:04:24 |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 47 WA * 12 |
ソースコード
#include <stdio.h> #include <bits/stdc++.h> #include <atcoder/all> using namespace atcoder; using mint = modint1000000007; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf 1000000005 int main(){ int N; cin>>N; vector<int> c(10,0); rep(i,9)cin>>c[i+1]; rep(i,10){ if(c[i]==N){ mint ans = mint(10).pow(N); ans --; ans /= 9; ans *= i; cout<<ans.val()<<endl; return 0; } } set<int> S; rep(i,10){ for(int j=i+1;j<10;j++){ if(c[i]>0&&c[j]>0){ S.insert(9*(j-i)); } } } { set<int> nS; for(auto a:S){ for(int i=1;i<=a;i++){ if(a%i==0)nS.insert(i); } } swap(S,nS); } long long ans = 1LL; for(auto a:S){ if(a%3==0)continue; int cur = 0; rep(i,10){ cur *= pow_mod(10,c[i],a); cur %= a; long long temp = pow_mod(10,c[i],a); temp --; if(temp<0)temp += a; temp *= inv_mod(9,a); temp %= a; temp *= i; temp %= a; cur += temp; cur %= a; } if(cur==0){ //cout<<a<<endl; ans = lcm(ans,a); } } long long sum = 0LL; rep(i,10){ sum += (long long)c[i] * i; } if(sum%3==0){ ans *= 3; } if(sum%9==0)ans *= 3; cout<<mint(ans).val()<<endl; return 0; }