COJ 0801 非传统题(一)

非传统题(一)
难度级别:A; 运行时间限制:1000ms; 运行空间限制:262144KB; 代码长度限制:2000000B
试题描述

大家好!我是COJ第一道非传统题,是不是感觉非常的excited?

作为第一道非传统题,自然要给大家水一水。

不过呢首先要告诉大家什么是非传统题?非传统题实际上就是没有固定的输入输出,很奇怪的题目。本题作为一道引例希望大家喜欢~

接下来是题目内容:

很久很久以前,chx出过一道大水题。

------------可是,很可惜他丢失了样例。。。。

现在,chx给你这道题的一套样例,你需要猜测chx出的是什么题然后编写程序解决它,祝你好运!

为了大家调试方便,本题的镜像将会放在练习场里,大家可以看到自己哪个测试点不对。

请从这里下载样例:链接: http://pan.baidu.com/s/1gd8L7qV 密码: ad5q

输入
呵呵
输出
呵呵
输入示例
呵呵
输出示例
呵呵
其他说明
保证所有的运算在int范围内。

题解:加,乘,素数,逗比共同组成了这道题哈哈我好天才呀啦啦啦~

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<algorithm>
 5 #include<queue>
 6 #include<cstring>
 7 #define PAU putchar(' ')
 8 #define ENT putchar('
')
 9 using namespace std;
10 inline int read(){
11     int x=0,sig=1;char ch=getchar();
12     while(!isdigit(ch)){if(ch=='-')sig=-1;ch=getchar();}
13     while(isdigit(ch))x=10*x+ch-'0',ch=getchar();
14     return x*=sig;
15 }
16 inline void write(int x){
17     if(x==0){putchar('0');return;}if(x<0)putchar('-'),x=-x;
18     int len=0,buf[15];while(x)buf[len++]=x%10,x/=10;
19     for(int i=len-1;i>=0;i--)putchar(buf[i]+'0');return;
20 }
21 const int Safe=5;
22 int gcd(int a,int b){return !b?a:gcd(b,a%b);}
23 int mul(int a,int b,int p){
24     int tmp=(a*b-(int)((double)a/p*b+1e-8)*p);
25     return tmp<0?tmp+p:tmp;
26 }
27 int pow(int a,int b,int p){
28     int ans=1;a%=p;
29     for(int i=b;i;i>>=1,a=mul(a,a,p))
30         if(i&1)ans=mul(ans,a,p);
31     return ans;
32 }
33 bool check(int a,int n,int r,int s){
34     int ans=pow(a,r,n),p=ans;
35     for(int i=1;i<=s;i++){
36         ans=mul(ans,ans,n);
37         if(ans==1&&p!=1&&p!=n-1) return true;
38         p=ans;
39     } if(ans!=1)return true;return false;
40 }
41 bool MR(int n){
42     if(n<=1) return false;
43     if(n==2) return true;
44     if(!(n&1)) return false;
45     int r=n-1,s=0;
46     while(!(r&1)) r>>=1,s++;
47     for(int i=0;i<Safe;i++)
48         if(check(rand()%(n-1)+1,n,r,s)) return false;
49     return true;
50 }
51 int n;
52 void solve1(){
53     n=read();
54     for(int i=1;i<=n;i++){
55         write(read()+read());ENT;
56     } return;
57 }
58 void solve2(){
59     n=read();
60     for(int i=1;i<=n;i++){
61         write(MR(read())?1:0);ENT;
62     } return;
63 }
64 void solve3(){
65     n=read();
66     for(int i=1;i<=n;i++){
67         write(read()*read());ENT;
68     } return;
69 }
70 void solve4(){
71     puts("你的程序需要在此处输出程序本身。听起来很难?努力吧!!!哈哈哈");
72     return;
73 }
74 void init(){
75     int type=read();
76     if(type==1) solve1();
77     else if(type==2) solve2();
78     else if(type==3) solve3();
79     else solve4();
80     return;
81 }
82 void work(){
83     return;
84 }
85 void print(){
86     return;
87 }
88 int main(){init();work();print();return 0;}
原文地址:https://www.cnblogs.com/chxer/p/4628423.html