比赛地址:http://www.nswoj.com/contest/show/1034
弱校新生赛题解,大牛速速离去~~
签到题,直接放代码
#include
int main()
{
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
if(n>=90&&n<=100)
printf("A\n");
else if(n>=80&&n<=89)
printf("B\n");
else if(n>=70&&n<=79)
printf("C\n");
else if(n>=60&&n<=69)
printf("D\n");
else if(n>=0&&n<=59)
printf("E\n");
else
printf("No answer!\n");
}
return 0;
}
两边之和大于第三边
#include
int main()
{
int t,n,a,b,c;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d",&a,&b,&c);
if(a+b>c&&a+c>b&&b+c>a)
printf("hi,triangle!\n");
else
printf("oh,that's too regretful!\n");
}
return 0;
}
对整除运算的理解
#include
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
if(a==0&&b==0)
break;
int ans=b/a;
if(b%a!=0)
{
ans++;
}
printf("%d\n",ans);
}
return 0;
}
因为数字的位数比较多,所以应该以字符串的方式来处理
#include
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
char s[25];
scanf("%s",s);
printf("%s\n",s+1);//因为去除负数和去掉整数的第一位是都是去掉一位,所以直接从下一位开始输出就好
}
return 0;
}
mq数的定义:数字本身为素数且组成这个数字的每一位也是素数
考察对素数的理解
每一位数的值肯定是个位数,个位数是素数的只有2,3,5,7,所以我们对他特判一下就可以
#include
int judge(int x)
{
if(x<2)
return 0;
for(int i=2; iif(x%i==0)
return 0;
return 1;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
if(judge(n))
{
while(n!=0)
{
if(n%10==2||n%10==3||n%10==5||n%10==7)
n/=10;
else
break;
}
if(n)
printf("NO\n");
else
printf("YES\n");
}
else
printf("NO\n");
}
return 0;
}
先把字符串变成 小写或者大写,然后判断一下这个串是不是回文串
#include
#include
int main()
{
char str[1000];
int Case = 1;
while(~scanf("%s",str))
{
int len=strlen(str);
for(int i=0; iif(str[i]>='a'&&str[i]<='z')
{
str[i]=str[i]-32;
}
}
int length_str = strlen(str);
int flag = 0;
int k = length_str / 2;
for(int i = 0; i <= k; i ++)
{
if(str[i] != str[length_str - i - 1])
{
flag = 1;
break;
}
}
if(flag)printf("#%d: NO\n",Case++);
else printf("#%d: YES\n", Case++);
}
}
根据奇偶来决定输出的内容
#include
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int flag=1;
for(int i=0; iif(flag)
{
printf("HE hate ");
flag=0;
}
else
{
printf("HE love ");
flag=1;
}
if(i!=n-1)
printf("that ");
}
puts("me");
}
}
考察自己的模拟能力,每个人的做法可能都不一样
#include
#include
char a[209][209];
int main()
{
int t,n;
scanf("%d",&t);
int falg=0;
while(t--)
{
memset(a,0,sizeof(a));
scanf("%d",&n);
int k=n-1;
for(int i=0; ifor(int j=0;j' ';
for(int j=k-i; j<=k+i; j++)
a[i][j]='*';
}
for(int i=0; ifor(int j=0; jprintf("%c",a[i][j]);
printf("\n");
}
for(int i=n-2; i>=0; i--)
{
for(int j=0; jprintf("%c",a[i][j]);
if(t!=0||i!=0)
printf("\n");
}
if(t!=0)
printf("\n");
}
return 0;
}
输出出现m次的编号,跟桶排序原理一样
#include
#include
int idx[120];
int main()
{
int n, k, m, temp;
scanf("%d%d%d",&k, &n, &m);
for(int i = 0; i < k; i ++)
{
scanf("%d",&temp);
idx[temp]++;
}
for(int i = 0; i <= 100; i ++)
{
if(idx[i] == m)
{
printf("%d\n",i);
break;
}
}
return 0;
}
根据题意是让模拟一下求最大公约数的辗转相除法,模拟一下就好
#include
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int a,b,c;
scanf("%d%d",&a,&b);
while(b!=0)
{
c=a%b;
a=b;
b=c;
}
printf("%d\n",a);
}
return 0;
}