您的位置:首页 > 其它

usaco 1.5.2 pprime

2012-07-15 10:36 330 查看
本来也是很简单的题,可是调试花了我几个小时!!!问题很严重啊,那些小错误能把人气上天了,看来还要更仔细更耐心一点!代码写的不怎么样,因为很多小错误不得已用小代码改过去…………应该有改进的办法…………下面贴代码,以作纪念。

View Code

/*{
ID:jzy3209981
PROG:pprime
LANG:C++
}*/
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<stdlib.h>
#include<math.h>
using namespace std;

char startl[15];
char endlo[15];
char palindrome[15];

bool judget(int i,bool q)
{
int a,b;
a=atol(palindrome);
if(q==1)
{
b=atol(endlo);
if(a>b)
return 1;
else
return 0;
}
else
{
b=atol(startl);
if(a<b)
return 1;
else
return 0;
}
}
bool judge()
{
int a,i;
a=atol(palindrome);
for(i=2;i<=sqrt(a);i++)
if(a%i==0) return false;
return true;
}
int main()
{
freopen ("pprime.in","r",stdin);
freopen ("pprime.out","w",stdout);
int start,end,startlen,endlen,i,p,q;
scanf("%d%d",&start,&end);
startlen=sprintf(startl,"%d",start);
endlen=sprintf(endlo,"%d",end);
if(startlen==1&&endlen==1)
{
for(i=startlen;i<=endlen;i++)
printf("%d\n",i);
return 0;
}
else if(startlen==1)
for(i=startl[0]-48;i<10;i++)
{
if(i==5||i==7)
printf("%d\n",i);
}
for(i=startlen;i<=endlen;i++)
{
if(i==1)
continue;
p=0;
q=i-1;
memset(palindrome,0,sizeof(palindrome));
palindrome[q+1]=NULL;
palindrome[p]='1';
palindrome[q]='1';
while(p+1<=q-1)
{
p++;
q--;
palindrome[p]='0';
palindrome[q]='0';
}
if(i==startlen)
{
if(!judget(i,0)&&judge())
printf("%s\n",palindrome);
}
else if(i==endlen)
{
if(!judget(i,1)&&judge())
printf("%s\n",palindrome);
}
else
{
if(judge())
printf("%s\n",palindrome);
}
while(1)
{
if(p==q)
palindrome[p]++;
else
{
palindrome[p]++;
palindrome[q]++;
}
if(palindrome[p]==58)
{
if(p-1>0)
{
palindrome[p-1]++;
palindrome[q+1]++;
if(palindrome[p-1]==58)
{
if(p-2>0)
{
palindrome[p-2]++;
palindrome[q+2]++;
if(palindrome[p-2]==58)
{
palindrome[0]+=2;
palindrome[i-1]+=2;
palindrome[p-2]='0';
palindrome[q+2]='0';
}
palindrome[p-1]='0';
palindrome[q+1]='0';
palindrome[p]='0';
palindrome[q]='0';
}
else
{
palindrome[p-2]+=2;
palindrome[q+2]+=2;
palindrome[p-1]='0';
palindrome[q+1]='0';
palindrome[p]='0';
palindrome[q]='0';
}
}
else
{
palindrome[p]='0';
palindrome[q]='0';
}
}
else if(p-1==0)
{
palindrome[0]+=2;
palindrome[i-1]+=2;
palindrome[p]='0';
palindrome[q]='0';
}
else
{
palindrome[0]+=2;
palindrome[i-1]+=2;
}
}
if(palindrome[0]>58)
break;
if(i==endlen&&judget(i,1))
break;
else if(i==startlen&&judget(i,0))
continue;

if(judge())
printf("%s\n",palindrome);
}
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: