テーマ学習——韓信点兵


1077韓信点兵
時間制限:500 MSメモリ制限:65536 K
Description
漢高祖の劉邦が大将軍の韓信統御兵士の数を尋ねたところ、韓信は3人に1列余1人、5人に1列余2人、7人に1列余4人、13人に1列余6人、17人に1列余2人、19人に1列余10人、23人に1列余1人、29人に1列余11人と答えた.
劉邦は茫然としてその数を知らない.あなたは?あなたは優秀なプログラマーですから、劉邦のこの問題を解決してください. 
入力フォーマット
       A,B,C,D,E,F,G,H,a,b,c,d,e,f,g,h    ,     A    a、 B    b、 C    c、 D    D、 E    e、 F    f、 G    g、 H    h,  A,B,C,D,E,F,G,H        

出力フォーマット
      ,              ,    8               。(      ,             2 63  )

入力サンプル
2 3 5 7 11 13 17 19
1 1 1 1 1 1 1 1

出力サンプル
9699691

夏休みに点数論を見て、ネット上でいくつかの中国の残りの定理を見て、振り返ってこの数学の問題を書きます/歯をむいて
//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

#define MP make_pair
#define PB push_back
#define mst(a,b) memset((a),(b),sizeof(a))
#define TEST cout<= (e); i-=(down))
#define rep1(s,n,up) for(int j = (s); j < (n); j+=(up))
#define per1(n,e,down) for(int j = (n); j >= (e); j-=(down))

typedef long long LL;
typedef unsigned long long uLL;
typedef pair Pii;
typedef vector Vi;
typedef vector Vii;
const int inf = 0x3f3f3f3f;
const LL INF = (1uLL << 63) - 1;
const double Pi = acos(-1.0);
const int maxn = (1 << 16) + 7;
const uLL Hashmod = 29050993;
const double esp=1e-6;


//#define local


int main() {
#ifdef local
    freopen("input.txt", "r", stdin);
    //freopen("output.txt","w",stdout);
#endif
    //ios::sync_with_stdio(0);
    //cin.tie();
    LL divisor[8],remainder[8],tot_m=1,sum=0;
    rep(0,8,1)scanf("%lld",&divisor[i]);
    rep(0,8,1)scanf("%lld",&remainder[i]);
    LL min_sum=divisor[0]+remainder[0];
    rep(0,8,1){
        tot_m*=divisor[i];
        LL s=divisor[i]+remainder[i];
        if(s>min_sum)
            min_sum=s;
    }
    rep(0,8,1){
        LL m=1,temp_m=1;
        rep1(0,8,1){
            if(j!=i)
                m*=divisor[j];
        }
        temp_m=m;
        while(m%divisor[i]!=1)
            m+=temp_m;
        sum+=m*remainder[i];
    }
    sum%=tot_m;
    while(sum