對拍model

暴力程序(std.cpp)

#include<bits/stdc++.h>
using namespace std;
int n,m,k,x;
int main(){
//  freopen("data.in","r",stdin);
//  freopen("std.out","w",stdout);
    scanf("%d%d%d%d",&n,&m,&k,&x);
    for(int i=1;i<=pow(10,k);i++)x+=m,x%=n;
    printf("%d\n",x);
    return 0;
} 

待驗證程序(my.cpp)

#include<bits/stdc++.h>
using namespace std;
int n,m,k,x;
int fast_pow(int a,int b,int mod){
    int c=1;
    while(b){
        if(b&1)c*=a,c%=mod;
        a*=a,a%=mod;
        b>>=1;
    }
    return c;
}
int main(){
//  freopen("data.in","r",stdin);
//  freopen("my.out","w",stdout);
    scanf("%d%d%d%d",&n,&m,&k,&x);
    for(int i=1;i<=fast_pow(10,k,n);i++)x+=m,x%=n;
    printf("%d\n",x);
    return 0;
}

驗證程序(compare.cpp)

#include<bits/stdc++.h>
using namespace std;
int main(){
    while(1){
    	clock_t t1,t2;//clock的類型爲clock_t
        system("rand.exe>data.in");
        system("std.exe<data.in>std.out");
        t1=clock();
        system("my.exe<data.in>my.out");
        t2=clock()-t1;
        cout<<"time: "<<t2<<endl;
        if(system("fc std.out my.out")){
            printf("Wrong answer.\n");
            exit(0);
        }
        printf("Correct!\n");
    }
    return 0;
}
//#include<bits/stdc++.h>
//using namespace std;
//int main(){
//  while(1){
//      system("./rand");
//      system("./std");
//      system("./my");
//      if(system("diff std.out my.out")){
//          printf("Wrong answer.");
//          exit(0);
//      }
//      printf("Correct!\n");
//  }
//}

數據生成器(rand.cpp)

#include<bits/stdc++.h>
using namespace std;
int n,m,k,x;
int main(){
    srand(time(0));
    n=rand()%100+10,m=rand()%100+1;
    if(n<m)swap(n,m);
    x=rand()%100+1;
    while(x>n){
        x=rand()%n+1;
    }
    k=rand()%5;
    printf("%d %d %d %d\n",n,m,k,x);
    return 0;
}
//#include<bits/stdc++.h>
//using namespace std;
//stringstream ss;
//int n,m,k,x;
//int main(int argc,char *argv[]){
//  freopen("data.in","w",stdout);
//  int seed=time(0);
//  if(argc){
//      ss.clear();
//      ss<<argv[1];
//      ss>>seed;
//  }
//  srand(seed);
//  srand(time(0));
//  n=rand()%100+10,m=rand()%100+1;
//  if(n<m)swap(n,m);
//  x=rand()%100+1;
//  while(x>n){
//      x=rand()%n+1;
//  }
//  k=rand()%5;
//  printf("%d %d %d %d\n",n,m,k,x);
//  return 0;
//}

註釋內爲Windows下程序,註釋外爲Linux下程序

示例題目傳送門:noip2013 轉圈遊戲

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章