Submission #857382
Source Code Expand
Copy
#include <bits/stdc++.h> #include <assert.h> using namespace std; typedef long long ll; typedef long double ld; #define PB push_back #define MP make_pair #define MOD 1000000007LL #define endl "\n" const ll UNDEF = -1; const ll INF=1e18; template<typename T> inline bool chkmax(T &aa, T bb) { return aa < bb ? aa = bb, true : false; } template<typename T> inline bool chkmin(T &aa, T bb) { return aa > bb ? aa = bb, true : false; } template<class T> T extgcd(T a, T b, T& x, T& y) { for (T u = y = 1, v = x = 0; a;) { T q = b / a; swap(x -= q * u, u); swap(y -= q * v, v); swap(b -= q * a, a); } return b; } template<class T> T mod_inv(T a, T m) { T x, y; extgcd(a, m, x, y); return (m + x % m) % m; } ll mod_pow(ll a, ll n, ll mod) { ll ret = 1; ll p = a % mod; while (n) { if (n & 1) ret = ret * p % mod; p = p * p % mod; n >>= 1; } return ret; } const ll mn=5e5+4; const ll p=101; ll ht[mn]; ll add(ll x, ll y) {return (x+y+MOD)%MOD;} ll mul(ll x, ll y) {return (x*y)%MOD;} ll gethash(ll x, ll y) { return mul(add(ht[y],-ht[x]),mod_inv(mod_pow(p,x,MOD),MOD));; } ll geom(ll x, ll n) { ll num=add(1,-mod_pow(x,n+1,MOD)); ll den=add(1,-x); return mul(num,mod_inv(den,MOD)); } ll powup(ll small, ll num, ll len) { return mul(small,geom(mod_pow(p,len,MOD),num-1)); } bool isgood(ll x, ll y) { ll k=y-x; set<ll> divs; ll dlim=sqrt(k)+1; dlim=min(dlim,k); for (ll d=1;d<=dlim;d++) { if (k%d==0) { divs.insert(d);divs.insert(k/d); } } ll actual=gethash(x,y); for (auto &d:divs) { if(d==k) continue; ll small=gethash(x,x+d); ll num=k/d; ll len=d; ll big=powup(small, num, len); if (big==actual) { //printf("num:%lld len:%lld small:%lld big:%lld actual:%lld x:%lld x+d:%lld\n",num,len,small,big,actual,x,x+d); return false; } } return true; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); string s; cin>>s; ll n=s.length(); ll h=0; ht[0]=h; ll m=1; for (ll x=0;x<n;x++) { h+=((s[x]-'a'+1)*m); h%=MOD; //printf("x:%lld h:%lld\n",x+1,h); ht[x+1]=h; m=(m*p)%MOD; } bool same=true; for (ll x=1;x<n;x++) { if (s[x]!=s[0]) same=false; } if (same) { printf("%lld\n1\n",n); } else if (isgood(0,n)) { printf("1\n1\n"); } else { ll ans=0; for (ll x=1;x<n;x++) { if (isgood(0,x)&&isgood(x,n)) { ans++; } } printf("2\n%lld\n",ans); } }
Submission Info
Submission Time | |
---|---|
Task | F - Best Representation |
User | LiChenKoh |
Language | C++14 (GCC 5.4.1) |
Score | 400 |
Code Size | 2413 Byte |
Status | TLE |
Exec Time | 2105 ms |
Memory | 4764 KB |
Judge Result
Set Name | Sample | Subtask1 | All | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 400 / 400 | 0 / 500 | ||||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
Sample | example_01.txt, example_02.txt, example_03.txt |
Subtask1 | example_01.txt, example_02.txt, example_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt, subtask1_30.txt, subtask1_31.txt, subtask1_32.txt, subtask1_33.txt |
All | example_01.txt, example_02.txt, example_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt, subtask1_30.txt, subtask1_31.txt, subtask1_32.txt, subtask1_33.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt, subtask2_21.txt, subtask2_22.txt, subtask2_23.txt, subtask2_24.txt, subtask2_25.txt, subtask2_26.txt, subtask2_27.txt, subtask2_28.txt, subtask2_29.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
example_01.txt | AC | 4 ms | 256 KB |
example_02.txt | AC | 4 ms | 256 KB |
example_03.txt | AC | 4 ms | 256 KB |
subtask1_01.txt | AC | 4 ms | 256 KB |
subtask1_02.txt | AC | 4 ms | 256 KB |
subtask1_03.txt | AC | 14 ms | 256 KB |
subtask1_04.txt | AC | 4 ms | 256 KB |
subtask1_05.txt | AC | 4 ms | 256 KB |
subtask1_06.txt | AC | 4 ms | 256 KB |
subtask1_07.txt | AC | 4 ms | 256 KB |
subtask1_08.txt | AC | 4 ms | 256 KB |
subtask1_09.txt | AC | 4 ms | 256 KB |
subtask1_10.txt | AC | 4 ms | 256 KB |
subtask1_11.txt | AC | 77 ms | 256 KB |
subtask1_12.txt | AC | 77 ms | 256 KB |
subtask1_13.txt | AC | 76 ms | 256 KB |
subtask1_14.txt | AC | 77 ms | 256 KB |
subtask1_15.txt | AC | 4 ms | 256 KB |
subtask1_16.txt | AC | 4 ms | 256 KB |
subtask1_17.txt | AC | 4 ms | 256 KB |
subtask1_18.txt | AC | 4 ms | 256 KB |
subtask1_19.txt | AC | 31 ms | 256 KB |
subtask1_20.txt | AC | 4 ms | 256 KB |
subtask1_21.txt | AC | 45 ms | 256 KB |
subtask1_22.txt | AC | 4 ms | 256 KB |
subtask1_23.txt | AC | 4 ms | 256 KB |
subtask1_24.txt | AC | 4 ms | 256 KB |
subtask1_25.txt | AC | 56 ms | 256 KB |
subtask1_26.txt | AC | 64 ms | 256 KB |
subtask1_27.txt | AC | 73 ms | 256 KB |
subtask1_28.txt | AC | 73 ms | 256 KB |
subtask1_29.txt | AC | 74 ms | 256 KB |
subtask1_30.txt | AC | 72 ms | 256 KB |
subtask1_31.txt | AC | 75 ms | 256 KB |
subtask1_32.txt | AC | 75 ms | 256 KB |
subtask1_33.txt | AC | 76 ms | 256 KB |
subtask2_01.txt | TLE | 2101 ms | 3860 KB |
subtask2_02.txt | AC | 18 ms | 4764 KB |
subtask2_03.txt | AC | 18 ms | 4764 KB |
subtask2_04.txt | AC | 18 ms | 4764 KB |
subtask2_05.txt | AC | 18 ms | 4764 KB |
subtask2_06.txt | AC | 18 ms | 4764 KB |
subtask2_07.txt | AC | 18 ms | 4764 KB |
subtask2_08.txt | AC | 18 ms | 4764 KB |
subtask2_09.txt | TLE | 2101 ms | 4764 KB |
subtask2_10.txt | TLE | 2101 ms | 4764 KB |
subtask2_11.txt | TLE | 2105 ms | 4764 KB |
subtask2_12.txt | TLE | 2101 ms | 4764 KB |
subtask2_13.txt | TLE | 2102 ms | 4764 KB |
subtask2_14.txt | AC | 18 ms | 4764 KB |
subtask2_15.txt | TLE | 2102 ms | 4764 KB |
subtask2_16.txt | AC | 18 ms | 4764 KB |
subtask2_17.txt | AC | 18 ms | 4764 KB |
subtask2_18.txt | AC | 18 ms | 4764 KB |
subtask2_19.txt | TLE | 2101 ms | 4764 KB |
subtask2_20.txt | TLE | 2105 ms | 4764 KB |
subtask2_21.txt | TLE | 2101 ms | 4508 KB |
subtask2_22.txt | TLE | 2102 ms | 4764 KB |
subtask2_23.txt | TLE | 2102 ms | 4764 KB |
subtask2_24.txt | TLE | 2105 ms | 4124 KB |
subtask2_25.txt | TLE | 2105 ms | 4252 KB |
subtask2_26.txt | TLE | 2101 ms | 4508 KB |
subtask2_27.txt | TLE | 2102 ms | 3868 KB |
subtask2_28.txt | AC | 12 ms | 2708 KB |
subtask2_29.txt | TLE | 2101 ms | 3868 KB |