暑期多校联合第一题,hdu4861

来源:互联网 发布:sha1rsa 是什么算法 编辑:程序博客网 时间:2024/05/20 17:23

看了杭电上的解题报告,要用费马小定理,但是没有搞懂。。。队友用的打表,看了打出来的表,发现了规律。

 

这是打表用的一段代码

#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#include <stack>#include <queue>#include <iostream>#include <algorithm>using namespace std;long long a[100];long long mypow(int a,int b){    long long ret = 1;    for(int i=0;i<b;i++){        ret *= a;    }    return ret;}int prime(int x){    for(int i = 2;i<x;i++){        if(x%i == 0)            return 0;    }    return 1;}int main(){    int p, k;    for(p=2;p<=20;p++){      //      prime(p);        long long sum = 0;        if(prime(p)){        for(int i=1;i<=30;i++){            sum = 0;            for(int j=1;j<p;j++){                sum += mypow(j,i);            }            a[i] = sum % p;        }        printf("p=%2d : ",p);        for(int i=1;i<=30;i++) printf("%d ",a[i]);        cout<<endl;        }    }    return 0;}


发现只有k/(p-1)为奇数时DouBiNan才会赢,下面是这道题的解题代码

 

#include<stdio.h>int main(){    int k,p;    while(~scanf("%d %d",&k,&p))    {        if(k/(p-1)%2==0) printf("NO\n");        else printf("YES\n");    }    return 0;}


 

0 0
原创粉丝点击