zoukankan      html  css  js  c++  java
  • POJ 1006 Biorhythms

    题解:中国剩余定理

    通解:ans=a[i]*M[i]*Inv(M[i],m[i])+k*M

    注意window与linux下读入输出差异

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    typedef long long Lint;
    
    int T;
    Lint b;
    Lint m[4]={0,23,28,33};
    Lint a[4];
    Lint M;
    Lint ans;
    
    Lint Gcd(Lint a,Lint b){
    	if(b==0)return a;
    	return Gcd(b,a%b);
    }
    Lint Inv(Lint x,Lint p){
    	int k=0;
    	for(int i=1;i<=p;++i)if(Gcd(i,p)==1)++k;
    	Lint ret=1;
    	k--;
    	for(;k;k>>=1,x=x*x%p){
    		if(k&1)ret=ret*x%p;
    	}
    	return ret;
    }
    
    int main(){
    	M=m[1]*m[2]*m[3];
    	while(scanf("%lld%lld%lld%lld",&a[1],&a[2],&a[3],&b)){
    		++T;
    		if(a[1]==-1)return 0;
    		ans=0;
    		for(int i=1;i<=3;++i){
    			ans=(ans+a[i]*(M/m[i])*Inv(M/m[i],m[i]))%M;
    		}
    		ans=(ans-b+M)%M;
    		if(ans==0)ans=M;
    		printf("Case %d: the next triple peak occurs in %lld days.
    ",T,ans);
    	}
    }
    

      

    自己还是太辣鸡了
  • 相关阅读:
    net core 3.1 依赖注入
    vue temeplete standard
    net core 3.1 Global
    vue Multiple selection
    c# mvc modelstate
    vue temeplete
    vue element pickdate combox input 排版
    c# 生成 验证码
    vue checkbox ajax
    js算法(2)
  • 原文地址:https://www.cnblogs.com/zzyer/p/8470186.html
Copyright © 2011-2022 走看看