简单粗暴

简单粗暴

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值