算法竞赛入门经典

来源:互联网 发布:艺术字生成软件下载 编辑:程序博客网 时间:2024/04/29 05:14

/*#include<stdio.h>

int main()
{
  int a,b,c;
  int t;
  scanf("%d%d%d",&a,&b,&c);
    if(a>=b)
      {
    t=a;
    a=b;
    b=t;
      }
  if(a>=c)
    {
      t=a;
      a=c;
      c=t;
    }
  if(b>=c)
    {
      t=b;
      b=c;
      c=t;
    }
  printf("%d %d %d ",a,b,c);
  return 1;
}
*/
 /*
 //¼¦ÍÃͬÁý
#include<stdio.h>
int main()
{
  int m,n;//mΪ×ÜÍÈÊý£¬nΪ×ÜÊý
  scanf("%d%d",&n,&m);
  int a,b;//a,b·Ö±ðΪ¼¦ºÍÍõÄÊýÁ¿
  b=(m-n*2)/2;
  a=n-b;
  if(m%2==1||a<0||b<0)
    {
      printf("no answer");

    }
  else
  {
  printf("%d %d",a,b);
  }
  return 1;

}
 */

  /*
#include<stdio.h>
 int main()
 {
   int x,y,z,a,b,c;
   scanf("%d%d%d",&x,&y,&z);
   a=x;
if(a>y)
  {
   a=y;
  }
   if(a>z)
     {a=z;}
  
 c=z;
 if(c<x)
   {
     c=x;
   }
     if(c<y)
       {
     c=y;
       }

 b=x+y+z-a-c;
 printf("%d %d %d",a,b,c);
 return 0;

 }
  */
  /*
#include<stdio.h>
#include<math.h>
 int main()
 {
   //   int x,y;
   //   scanf("%d%d",&x,&y);

   printf("%d%d",(1+2),3+4);
   //   printf("/%d");
   //   printf("/'%d'");
   return 1;
 }
  */
  /*
#include<stdio.h>

 int main()
 {
   int x,y;
   scanf("%d",&x);
   for(y=0;y<x;y++)
     {
       printf("%d",y);
     }
   return 1;
 }
  */
  /*
#include<stdio.h>
 int main()
 {
   int x,hi,n,lo;
   for(x=1;;x++)
     {
       n=x*x;
       if(n<1000) continue;
       if(n>9999) break;
       hi=n/100;
       lo=n%100;
       if(hi/10==hi%10&&lo/10==lo%10) printf(" %d/n",n);
     }
   return 0;

 }
  */
  /*
#include<stdio.h>
 int main()
 {
   int x,count=0;
   scanf("%d",&x);
   while(x!=1)
        {
      if(x%2==1)
        {
          x=3*x+1;
         
        }
      else
        {
        x=x>>1;
         
        }
count++;
    }
   printf("%d",count);
 }
  */
  /*
#include<stdio.h>
 int main()
 {
   int i,t=1,s=0;
   int x;
   scanf("%d",&x);
   for(i=1;i<=x;i++)
     {
       t*=i;
       s+=t;
     }
   printf("%d",s%1000000);
   return 0;
 }
  */
  /*
#include<stdio.h>
 int main()
 {
   int min=1000,max=0,i,x,sum=0;
   int avarge;
   i=0;
   while(scanf("%d",&x)==1)
     {
       if(x>1000) continue;
       if(min>x) min=x;
       if(max<x) max=x;
       sum+=x;
       i++;
     }
   avarge=sum/i;
   printf("%d %d %d",min,max,avarge);
   return 0;
 }
  */
  /*
#define LOCAL
#include<stdio.h>
#define INF 1000000000
 int main()
 {
#ifdef LOCAL
   freopen("data.in","r",stdin);
   freopen("data.out","w",stdout);
#endif
   int x,min=INF,max=-INF,s=0;
   int count=0;
   while(scanf("%d",&x)==1)
     {
       if(min>x) min=x;
       if(max<x) max=x;
       s+=x;
       count++;

     }
   printf("%d %d %.3lf",min,max,(double)(s/count));
   return 1;
 }

  */
  /*
#include<stdio.h>
#define INF 1000000000
 int main()
 {
   FILE *fin=stdin,*fout=stdout;
   fin=fopen("data.in","rb");
   fout=fopen("data.out","wb");
   int x,n=0,min=INF,max=-INF,s=0;
   while(fscanf(fin,"%d",&x)==1)
     {
       if(min>x) min=x;
       if(max<x) max=x;
       s+=x;
       n++;
     }
   fprintf(fout,"%d %d %.3lf",min,max,(double)s/n);
   fclose(fin);
   fclose(fout);
   return 0;
 }


  */
  /*
  //浮点陷阱
#include<stdio.h>
 int main()
 {
double i;
   for(i=0;i!=10.0;i+=0.1)
     printf("%.1lf",i);
   return 0;
 }

  */
  /*
  //7744问题
#include<stdio.h>
#include<math.h>

 int main()
 {
   int i,j,n;
   double m;
  for(i=1;i<=9;i++)
    {
      for(j=0;j<=9;j++)
    {
      n=i*1100+j*11;
      m=sqrt(n);
      if(floor(m+0.5)==m) printf("%d/n",n);
    }
    }
  return 0;
 }
  */
  /*
#include<stdio.h>
#include<time.h>
 int main()
 {
   const int MOD=1000000;
   int i,x,j,t=1,s=0;
   scanf("%d",&x);
   for(i=1;i<=x;i++)
     {
       t=1;
       for(j=1;j<=i;j++)
     {
       t*=j;
     }
       s+=(t%MOD);

     }
   printf("%d/n",s);
   printf("Time used =%.2lf/n",(double)clock()/CLOCKS_PER_SEC);
   return 0;
 }
  */
  /*
  //水仙花数
 #include<stdio.h>
 int main()
 {
   int a,b,c,i;
   for(i=100;i<=999;i++)
     {
       a=i/100;
       b=(i/10)%10;
       c=(i%10);
       if(a*a*a+b*b*b+c*c*c==i)
     {
       printf("%d ",i);
     }
     }
   return 0;
 }
  */
  /*
#include<stdio.h>
 int main()
 {
   int a,b,c;//它们分别表示三五七排剩余的人数
   int i,flag=0;
   scanf("%d%d%d",&a,&b,&c);
   for(i=10;i<=100;i++)
     {
       if(i%3==a&&i%5==b&&i%7==c)
     {
       printf("%d",i);
       flag=1;
       break;
     }
     }
   if(flag==0)
     {
       printf("No answer");
     }
   return 0;
 }
  */
  /*
#include<stdio.h>
 int main()
 {
   int i,j,k;
   int n;//n表示层数
   scanf("%d",&n);
   for(i=1;i<=n;i++)
     {
       for(j=1;j<i;j++)
     {

       printf(" ");
     }

       for(k=2*n-1;k>=2*i-1;k--)
     {
       printf("#");
     }
       printf("/n");
     }
   return 0;
 }
  */
  /*
#define LACAL
#include<stdio.h>
#include<time.h>
 int main()
 {
   int x;
   scanf("%d",&x);
   int m;
   scanf("%d",&m);
#ifdef LACAL
   freopen("data.in","r",stdin);
   freopen("data.out","w",stdout);
#endif
   int i=0,j=0;
   int n;


   while(i<x)
     {
       scanf("%d",&n);
       i++;
       if(n<m) j++;
     }
   printf("%d %d ",i,j);
   printf("%.3lf",(double)clock()/CLOCKS_PER_SEC);
   return 1;
 }
  */
  /*
#include<stdio.h>
 #include<time.h>
 int main()
 {
   int n,m,ai;
   scanf("%d%d",&n,&m);
   FILE *fin,*fout;
   fin=fopen("data.in","rb");
   fout=fopen("data.out","wb");
   int i=0,j=0;
   while(i<n)
     {
       fscanf(fin,"%d",&ai);
       i++;
       if(ai<m) j++;

     }
   fprintf(fout,"%d %d %.5lf",i,j,(double)clock()/CLOCKS_PER_SEC);
   //   fprintf(fout,"%.5lf",(double)clock()/CLOCKS_PER_SEC);
   fclose(fin);
   fclose(fout);
   return 0;
 }
  */
  /*
  //调和级数
#include<stdio.h>
 int main()
 {
   int i=1;
   double s=0.0;
   int n;
   scanf("%d",&n);
   for(i=1;i<=n;i++)
     {
       s+=1.0/(i);
     }
   printf("%.3lf",s);
   return 0;
 }
  */
  /*
//好像有点问题,怎么会等于7.54?
#define MIN 0.000001
#include<stdio.h>
 int main()
 {
   double sign=-1.0;
   double s=0.0,t=0.0;
   int i;
   for(i=1;;i++)
     {
       sign*=sign;
       t=(double)(sign*1.0)/(2*i-1);
       s+=t;

       if(t<MIN) break;
     }
   printf("%.6lf",s);
   return 0;
 }

  */
  /*
  //有陷阱,不知道是怎么回事
#include<stdio.h>

 int main()
 {
  int n,m;
double s=0.0;
   scanf("%d%d",&n,&m);
   int i;
   for(i=n;i<=m;i++)
     {
       s+=1.0/(i*i);
     }
   printf("%.5lf",s);
   return 0;
 }
  */
  /*
  //有问题,不会做
#include<stdio.h>
 int main()
 {
   int a,b,c;
   scanf("%d%d%d",&a,&b,&c);
   int i=0;
   double d=1.0;
    for(i=0;i<c;i++) d*=0.1;
    printf("%f",(double)(((1.0*a)/b)%d));
   return 0;
 }
  */


  //////第三章 数组
  /*
#include<stdio.h>
#include<string.h>
#define MAXN 100+10
 int a[MAXN];
int b[MAXN];
int main()
{
  int i,x,n=0;
  while(scanf("%d",&x)==1)
    {
      n++;
      a[n]=x;

      for(i=n-1;i>=1;i--)
    {
      printf("%d ",a[i]);
    }
      printf("%d/n",a[0]);
    }
  memcpy(b,a,sizeof(a));
  for(i=n-1;i>=0;i--)
    {
      printf("%d ",b[i]);
    }
  return 0;
}
*/
#define MAX 1010
#include<stdio.h>
int a[MAX];
int main()
{
  int i,n,k;
  scanf("%d%d",&n,&k);
  for(i=0;i<n;i++)
    {
      a[i]=i+1;
    }
  int j;
  for(i=2;i<=k;i++)
    {
      for(j=i;j<=k;j*=i)
    {
      if(a[j-1]==0)
    {
      a[j-1]=j;
    }
      else
    {
      a[j-1]=0;
    }
    }
    }
  for(j=0;j<n;j++)
    {
      if(a[j]!=0)
    {
      printf("%d ",a[j]);
    }
    }
  return 0;
}

原创粉丝点击