1
#include<stdio.h>
#include<string.h>
int main()
{
int n,m,i,j,len;
while(scanf("%d%d",&n,&m)!=EOF)
{
printf("%c",'+');
for(i=0;i<n;i++)
{
printf("%c",'-');
}
printf("%c\n",'+');
for(j=0;j<m;j++)
{
for(i=0;i<n+2;i++)
{
if(i==0)
{
printf("%c",'|');
}
else if(i==n+1)
{
printf("%c\n",'|');
}
else
{
printf(" ");
}
}
}
printf("%c",'+');
for(i=0;i<n;i++)
{
printf("%c",'-');
}
printf("%c\n",'+');
printf("\n");
}
return 0;
}
2
对于每组例子,输出连续的几个女朋友手中的玫瑰花总和为M的所有可能,以起始女朋友编号从小到大排序。
#看做数学问题解i=sqrt(2*m)估值,假设首项是1,我们代入m=a1*n+n*(n-1)/2,则有n(n+1)=2m(n是项数的个数)。
所以有n*(n+1)=2m>n*n,即n<sqrt(2m); 也就是说项数最多的情况也只有sqrt(2m)
#include<stdio.h>
#include<math.h>
int main()
{
int i,j,a1,m,n;
while(scanf("%d%d",&n,&m)!=EOF&&(n!=0&&m!=0))
{
for(i=sqrt(2*m);i>0;i--)
{
a1=m/i-(i-1)/2;
if(2*a1*i+i*i-i==2*m&&a1>0)
{
printf("[%d,%d]\n",a1,a1+i-1);
}
}
printf("\n");
}
return 0;
}
3
An=(n-1)*(an-1+an-2)
求一串数排序没有一个数在规定位置的概率,即1/2!-1/3!+1/4!-1/5!...
#include<stdio.h>
double f(int x)
{
int i,num;
num=1;
for(i=2;i<=x;i++)
{
num*=i;
}
return 1.0/num;
}
int main()
{
int m,n,i,j;
double sum,t;
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d",&n);
sum=0;t=1;
if(n>1&&n<=20)
{
for(j=2;j<=n;j++)
{
if(j%2==0)
{
t=f(j);
}
else
{
t=-f(j);
}
sum+=t;
}
printf("%.2lf%%\n",sum*100);
}
}
return 0;
}
4
求一组时间段取最多时间段的个数
#include<stdio.h>
int main()
{
int n,i,j,t,a[1000],b[1000],count,last;
while(scanf("%d",&n)!=EOF&&n!=0&&n<=100)
{
for(i=0;i<n;i++)
{
scanf("%d%d",&a[i],&b[i]);
}
for(i=1;i<n;i++)
{
for(j=0;j<i;j++)
{
if(b[i]<b[j])
{
t=a[i];a[i]=a[j];a[j]=t;
t=b[i];b[i]=b[j];b[j]=t;
}
}
}
last=0;count=0;
for(i=0;i<n;i++)
{
if(a[i]>=last)
{
count++;
last=b[i];
}
}
printf("%d\n",count);
}
return 0;
}
4*
#include<iostream>
#include<stdio.h>
#include<algorithm>
using namespace std;
struct time
{
int begin;
int end;
};
bool cmp(time a,time b)
{
return a.end < b.end;
}
int main()
{
int n,i,t,last,begin,end;
while(scanf("%d",&n)!=EOF&&n!=0)
{
struct time a[100000];
for(i=0;i<n;i++)
{
scanf("%d%d",&a[i].begin,&a[i].end);
}
sort(a,a+n,cmp);
t=0;
last=-1;
for(i=0;i<n;i++)
{
if(a[i].begin>=last)
{
t++;
last=a[i].end;
}
}
printf("%d\n",t);
}
return 0;
}
5
要测试多组数据,看清题
#include<stdio.h>
int main()
{
int n,i,d;
double a,s,x,y;
while(scanf("%d",&n)!=EOF)
{
x=0;y=0;
for(i=0;i<n;i++)
{
scanf("%lf%lf",&a,&s);
if(s==-1)
{
continue;
}
if(s<=100)
{
if(s>=90)
{
d=4;
}
else if(s>=80)
{
d=3;
}
else if(s>=70)
{
d=2;
}
else if(s>=60)
{
d=1;
}
else
{
d=0;
}
x+=d*a;
y+=a;
}
}
if(x==0)
{
printf("-1\n");
}
else
{
printf("%.2lf\n",x/y);
}
}
return 0;
}
6
#include<stdio.h>
double f(char c,double a,double b)
{
switch(c)
{
case '+': return a+b;break;
case '-': return a-b;break;
case '*': return a*b;break;
case '/': return a/b;
}
}
int main()
{
int d,n,i;
scanf("%d",&n);
if(n>0&&n<1000)
{
for(i=0;i<n;i++)
{
getchar();
char c;
double a,b;
scanf("%c%lf%lf",&c,&a,&b);
d=0;
if(f(c,a,b)==int(f(c,a,b)))
{
d=int(f(c,a,b));
printf("%d\n",d);
}
else
{
printf("%.2lf\n",f(c,a,b));
}
}
}
return 0;
}
7
求A^B的最后三位数表示的整数。
说明:A^B的含义是“A的B次方”
#include<stdio.h>
int main()
{
int a,b,i,x;
while(scanf("%d%d",&a,&b)!=EOF&&(a!=0&&b!=0))
{
x=a;
a=1;
for(i=1;i<=b;i++)
{
a=a%1000;
a=a*x;
}
printf("%d\n",a%1000);
}
return 0;
}
8
1).密码长度大于等于8,且不要超过16。
(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。
这四个字符类别分别为:
1.大写字母:A,B,C...Z;
2.小写字母:a,b,c...z;
3.数字:0,1,2...9;
4.特殊符号:~,!,@,#,$,%,^;
给你一个密码,你的任务就是判断它是不是一个安全的密码。
#include<stdio.h>
#include<string.h>
int main()
{
int n,i;
char a[10000];
scanf("%d",&n);
while(n--)
{
scanf("%s",a);
int len;
bool b,c,d,e;
b=c=d=e=false;
len=strlen(a);
for(i=0;i<len;i++)
{
if(a[i]>=48&&a[i]<=57)
#0-9
{
b=true;
}
if(a[i]==64||a[i]==33||a[i]==35||a[i]==36||a[i]==37||a[i]==94||a[i]==126)
{
c=true;
}
if(a[i]>=65&&a[i]<=90)
#A-Z
{
d=true;
}
if(a[i]>=97&&a[i]<=122)
#a-b
{
e=true;
}
}
if(len>=8&&len<=16)
{
if((e&b&c)||(d&b&e)||(d&c&e)||(b&c&d))
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
else
{
printf("NO\n");
}
}
return 0;
}
9
HDU1048
#include<stdio.h>
#include<string.h>
int main()
{
char a[30]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
char b[30]={'V','W','X','Y','Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U'};
char c[100000],x[10000];
int i,j,m,t,len;
while(gets(x))
{
if(strcmp(x,"START")==0)
{
gets(c);
len=strlen(c);
for(j=0;j<len;j++)
{
for(m=0;m<26;m++)
{
if(c[j]==a[m])
{
c[j]=b[m];break;
}
}
}
puts(c);
}
if(strcmp(x,"ENDOFINPUT")==0)
{
break;
}
}
return 0;
}
9*
#include<stdio.h>
#include<string.h>
int main()
{
char a[10000],x[80000],s[100000];
int j,len;
while(gets(s)&&strcmp(s,"START")==0)
{
gets(a);
len=strlen(a);
for(j=0;j<len;j++)
{
if(a[j]>='F'&&a[j]<='Z')
{
a[j]-=5;
}
else if(a[j]>='A'&&a[j]<='E')
{
a[j]+=21;
}
else
{
continue;
}
}
while(gets(s)&&strcmp(s,"END")==0)
{
puts(a);
break;
}
}
return 0;
}