div2 5.26—5.27

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;

  }

猜你喜欢

转载自blog.csdn.net/haohaoxuexilmy/article/details/81116450