简单粗暴
Description
这是一道简单粗暴的题目。 数字的世界是很神奇的,经过以往的练习我们已经知道了一些非常有特点的数字,比如“水仙花数”,“回文数”,“素数”。 现在知道了有一种神秘数,特别神秘的数。然而我们不知道哪些数是这种神秘数,只知道这些神秘数共有的特点: 1:它们从最高位到最低位上的数字是单调的(单调增或单调减,ps:相邻两个数字可以相等的)。 2:把它们当做年份的话不会是闰年。 3:它们都是素数。 4:它们的最高位上的数不能是1。 很简单吧。 那么现在给你一些数,请判断这些数是不是“神秘数”。如果是,输出“Yes”,否则输出“No”(不带引号)。
Input
第一行一个整数T,代表样例组数。 接下来有T行每行一个整数n,请判断n是不是神秘数。(n是int范围内的正整数)
Output
如果是神秘的数,输出“Yes”,否则输出“No”(不带引号)。
Sample Input
1
1
Sample Output
No
#include<stdio.h>
#include<string.h>
#include<math.h>
int prime( int p);
int main(){
int i,n,digit,a,b1;
int number,c,c1,c2;
scanf("%d",&n);
char b[n];
for(i=0;i<n;i++){
int flgh=0,fagh=1,l=1,f=1;
scanf("%d",&number);
a=c=number;
int count=0;
while(number!=0){
count++;
number=number/10;
}
int k=pow(10,count-1);
if(a/k!=1) flgh=1;
if(a%4==0&&a%100!=0||a%400==0) fagh=0;
c1=c%10;
c=c/10;
c2=c%10;
b1=a%10;
while(a!=0){
digit=a%10;
if(prime(digit)==0){
l=0;
break;
}
if(c1>=c2){
if(b1<digit){
f=0;
break;
}
}
else{
if(b1>digit){
f=0;
break;
}
}
b1=digit;
a=a/10;
}
if(flgh==1&&fagh==1&&f==1&&l==1) b[i]=1;//strcpy(b[i],"Yes");
else b[i]=0;//strcpy(b[i],"No");
}
for(i=0;i<n;i++){
if(b[i]==1) printf("Yes\n");
else printf("No\n");
// printf("%s\n",b[i]);
}
return 0;
}
int prime(int p){
int i;
if(p==1) return 0;
for(i=2;i<=p/2;i++)
if(p%i==0) return 0;
return 1;
}