摘要:#include#include#includeusing namespace std;const int SIZE=1000002;int H[SIZE];void table(void){memset(H,0,sizeof(H));int i,j,mul,cnt=0;for(i=5;i=SIZE)break;if(0==H[i]&&0==H[j]){H[mul]=1;}else{H[mul]=-1;}}}for(i=5;i>n&&n){cout<<n<<" "<<H[n]<<endl;
阅读全文
随笔分类 - 杭电ACM
摘要:#include#includetypedef __int64 int64;bool is_prime(int64 n){for(int64 i=2;i*i0){if(n&1)ans=ans*x%mod;x=x*x%mod;n>>=1;}return ans;}int main(){int64 p,a;while(scanf("%I64d%I64d",&p,&a)!=EOF){if(0==p&&0==a)break;if(!is_prime(p)&&a==mod_pow(a,p,p))printf(&quo
阅读全文
摘要:#include#include#includetypedef __int64 int64;__int64 mod_pow(__int64 x,__int64 n,__int64 m){__int64 ans=1;while(n>0){if(n&1){ans=ans*x%m;}x=x*x%m;n>>=1;}return ans;}int main(){int T,H;__int64 M,a,b,sum;scanf("%I64d",&T);while(T--){scanf("%I64d",&M);scanf(&qu
阅读全文
摘要:#include#includeusing namespace std;const int MAX=50001;int father[MAX];void Init(int n){for(int i=1;i>n>>m){ans=0;if(n==0&&m==0)break;Init(n);while(m--){cin>>x>>y;merge(x,y);}for(i=1;i<=n;i++)ans+=(father[i]==i);cout<<"Case "<<T++<<":
阅读全文
摘要:#include#includeusing namespace std;const int MAX=30001;int father[MAX],rank[MAX],num[MAX];//num[MAX]用来维护集合元素个数void Init(int n){for(int i=0;i<=n;i++){father[i]=i;rank[i]=0;num[i]=1;}}int find(int x){while(x!=father[x])x=father[x];return x;}void merge(int x,int y){int fx,fy;fx=find(x);fy=find(y);i
阅读全文
浙公网安备 33010602011771号