您的位置:首页 > 其它

15级竞赛组周赛(3)题解(12.22.15)

2015-12-22 14:37 281 查看
URL: 15级竞赛组周赛(3)

A

开始数据有问题,后来重判了

黄图哥反映pow函数有精度问题,所以还是自己乘7次吧

#include <stdio.h>
inline int pow7(int n){return n*n*n*n*n*n*n;}
int main(void)
{
int num;
while(~scanf("%d",&num)){
int tmp=num,sum=0;
while(tmp>0){
sum += pow7(tmp%10);
tmp /= 10;
}
printf("%c\n",sum==num?'Y':'N');
}
return 0;
}


B

10到100人别超限

#include <stdio.h>
int main(void)
{
int a,b,c;
while(~scanf("%d%d%d",&a,&b,&c)){
bool get=false;
for(int i=10;i!=101;++i){
if(i%3==a && i%5==b && i%7==c){
printf("%d\n",i);
get=true;
break;
}
}
if(!get)printf("No answer\n");
}
return 0;
}


C

只有可能是一位数和两位数,ifelse列举一下就好了

#include <stdio.h>
#include <string.h>
char number[][8]={"zero","one","two","three","four","five","six","seven","eight","nine"};
int find(char *s)
{
for(int i=0;i<10;i++)
if(strcmp(s,number[i])==0)
return i;
}
int main()
{
char a[8],b[8];
int A,B;
while(scanf("%s %s",a,b)!=EOF)
{
if(strcmp(b,"+")==0)
A=find(a);
else
{
A=find(a)*10+find(b);
scanf("%s",a);
}
scanf("%s %s",a,b);
if(strcmp(b,"=")==0)
B=find(a);
else
{
B=find(a)*10+find(b);
scanf("%s",a);
}
if(A==0&&B==0)
break;
printf("%d\n",A+B);
}
return 0;
}


D

这不就是火车进栈站吗?

条件判断有点麻烦,多调试就好了

关于error的判断:按1,2,3…,n的顺序进栈,如果某一时刻数据要求 i 出栈,而此时进栈的数字已经到了 j ( i<j),直接就不成立,输出error。

#include <stdio.h>
#include <iostream>
#include <stack>
using namespace std;
int main(void)
{
int N;
while(~scanf("%d",&N)){
int out[1245];
for(int i=1;i<=N;++i)scanf("%d",&out[i]);
int toin=1,toout=1;
stack<int> stk;
while(1){
if(toout>N)break;
if((toin>N||toin>out[toout]) && out[toout]!=stk.top()){
printf(" error");
break;
}
if(toin==out[toout]){
++toin;
++toout;
printf("PQ");
continue;
}
if(!stk.empty() && out[toout]==stk.top()){
stk.pop();
++toout;
putchar('Q');
continue;
}
if(stk.empty() || out[toout]!=stk.top()){
stk.push(toin);
++toin;
putchar('P');
continue;
}
}
putchar('\n');
}
return 0;
}


E

YES!

做题之前先总览一下好么……签到题都不做我看着真着急……

写题解之前改了一下代码,没再次提交,应该不会有问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: