2012
#include<stdio.h>
#include<math.h>
int main() {
int x, y;
while(scanf("%d%d", &x,&y)!=EOF && (x || y)) {
int flag = 1;
for(int i = x; i <= y; i++)
{
int num = i*i+i+41;
int m = (int)sqrt(num+0.5);
for(int j = 2; j <= m; j++)
if(num%j==0)
{
flag = 0;
break;
}
}
if(flag)
printf("OK\n");
else
printf("Sorry\n");
}
return 0;
}
2013
此题目关键在这个for循环的判断条件
#include<stdio.h>
int main()
{
int i,j;
int n;
while(scanf("%d",&n)!=EOF)
{
int sum=1;
for(i=n;i>1;i--)
{
sum=(sum+1)*2;
}
printf("%d\n",sum);
}
return 0;
}
2014
此题目关键在于最后一句printf,想出求平均值的简单办法。(求和后减去最大值最小值再求平均)
#include <stdio.h>
int main()
{
int max,min,sum,n,s,t;
while (scanf("%d",&n)!=EOF)
{
sum=0;
min=100;
max=2;
t=n;
while (t--)
{
scanf("%d",&s);
min=min>s?s:min;
max=max>s?max:s;
sum+=s;
}
printf("%.2lf\n",(sum-min-max)*1.0/(n-2));
}
return 0;
}
2015
此题目逻辑较为复杂,我花了好久才理解这段怎么编写的,这是我看到此题最短的程序。故贴这一种解法。
//hdoj2015
#include<stdio.h>
int main() {
int n, m;
while(scanf("%d%d", &n, &m)!=EOF) {
int sum = 0;
for(int i = 1; i <= n; i++)
{
sum += 2*i;
if(i%m == 0)
{
printf(i>m?" %d":"%d", sum/m);//一定能整除
sum = 0;
}
}
if(sum) {
printf(n/m>0?" %d":"%d",sum/(n%m));
}
printf("\n");
}
return 0;
}
2016
#include <stdio.h>
int main()
{
int n,seq[101],min,i,idx;
while (scanf("%d",&n),n)
{
min=0x3f3f3f3f;
for(i=0;i<n;i++)
{
scanf("%d",&seq[i]);
if(seq[i]<min)
{
min=seq[i];
idx=i;
}
}
seq[idx]=seq[0];
printf("%d",min);
for(i=1;i<n;i++) printf(" %d",seq[i]);
printf("\n");
}
return 0;
}
2017
#include <stdio.h>
#include <string.h>
char a[10000];
int main() {
int n;
while(scanf("%d", &n)!=EOF) {
while(n--) {
scanf("%s", a);
int len = strlen(a);
int num = 0;
for(int i = 0; i < len; i++) {
if(a[i] >= 48 && a[i] <= 57) num++;
}
printf("%d\n", num);
}
}
return 0;
}
2018
#include <stdio.h>
int main()
{
int j,n,a[60];
while(scanf("%d",&n),n)
{
a[1]=1;
a[2]=2;
a[3]=3;
for(j=4;j<=n;j++)
a[j]=a[j-1]+a[j-3]; //这一步最灵性
printf("%d\n",a[n]);
}
}
2019
排序算法并没有自己写,用的C++内置的sort
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
int n,m;
int a[110];
while(scanf("%d%d",&n,&m)&&(n||m))
{
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
a[n]=m;
sort(a,a+n+1);
for(int i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("%d\n",a[n]);
}
return 0;
}
2020
就是for循环的排序
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j,k,l,m,n,a[1100];
while(scanf("%d",&n),n)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=1;i<=n;i++)
for(j=1;j<n;j++)
{
if(abs(a[j])<abs(a[j-1]))
{
m=a[j-1];
a[j-1]=a[j];
a[j]=m;
}
}
for(i=n-1;i>0;i--)
printf("%d ",a[i]);
printf("%d\n",a[0]);
}
}
2021
//发工资
#include<stdio.h>
main()
{
int n,i,m,a[100],b,c,d,e,f,g;
while(scanf("%d",&n)!=EOF){
if(n==0)
break;
else{
m=0;
for(i=0;i<=n-1;i++){
scanf("%d",&a[i]);
b=a[i]/100;
c=(a[i]-b*100)/50;
d=(a[i]-b*100-c*50)/10;
e=(a[i]-b*100-c*50-d*10)/5;
f=(a[i]-b*100-c*50-d*10-e*5)/2;
g=(a[i]-b*100-c*50-d*10-e*5-2*f)/1;
m+=b+c+d+e+f+g;
}
printf("%d\n",m);
}
}
return 0;
}