#include #include template constexpr inline T mod(T a,T m){ a %= m; return (a<0?a+m:a); } template std::tuple ext_gcd(T a,T b){ if(b==0){ return {a,1,0}; } auto [d,y,x] = ext_gcd(b,a%b); y -= a/b * x; return {d,x,y}; } template T mod_inv(T a,T m){ auto[d,x,y] = ext_gcd(a,m); return (d!=1?-1:mod(x,m)); } #include #include template T gerner(std::vector const& b,std::vector const& m){ assert(0 b,std::vector m,int64_t const MOD){ using i64 = int64_t; assert(0 coeffs(std::size(m),1); std::vector constants(std::size(m),0); for(int k=0;k int64_t operator"" _i64(unsigned long long x){ return (int64_t)x; } void solve_yuki_187(){ using namespace std; using i64 = int64_t; constexpr i64 MOD = 1e9+7; int n; cin>>n; vector x(n),y(n); for(int i=0;i>x[i]>>y[i]; // A % y[i] = x[i], A \equiv x[i] (mod. y[i]) { // x[i] がすべて0なら lcm(y) が答え if(all_of(begin(x),end(x),[](i64 xi){return xi==0;})){ auto acc_lcm = [&MOD](i64 acc,i64 yi){return lcm(acc,yi)%MOD;}; i64 ans = accumulate(begin(y),end(y),1_i64,acc_lcm); cout<< ans < pairwise_coprime = {7,11,13,16,17,19,23,25,27,29}; auto contain = [&pairwise_coprime](int b_1){return binary_search(begin(pairwise_coprime),end(pairwise_coprime),b_1);}; vector a(31),r,m=pairwise_coprime; for(int b=2;b<=30;++b){ cin>>a[b]; if(contain(b-1)) r.emplace_back(a[b]%(b-1)); } i64 ans = gerner(r,m); if(ans==25)exit(1); auto invalid = [](){ cout<<"invalid"<1e12)invalid(); for(int b=2;b<=30;++b) if(a[b] != digit_sum(ans,b)) invalid(); cout<