华师一附中OI组

标题: 周日下午精英版程序集 [打印本页]

作者: admin    时间: 2022-3-27 14:14
标题: 周日下午精英版程序集
复习:
1、约瑟夫问题
作者: admin    时间: 2022-3-27 14:14
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int mx=10;
  4. int a[mx],i,s,k;
  5. int main()
  6. {
  7.         for (i=1; i<=8; i++) a[i]=1;
  8.         i=s=k=0;
  9.         while (k<8)
  10.                 {
  11.                         i++;
  12.                         if (i>8) i=1;
  13.                         s+=a[i];
  14.                         if (s==5)
  15.                                 {
  16.                                         cout<<i<<' ';
  17.                                         a[i]=0;
  18.                                         s=0;
  19.                                         k++;
  20.                                 }
  21.                 }
  22.         return 0;
  23. }
复制代码

作者: admin    时间: 2022-3-27 14:16
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int mx=110;
  4. int a[mx],i,j;
  5. int main()
  6. {
  7.         for (i=2; i<=100; i++) a[i]=1;
  8.         for (i=2; i*i<=100; i++)
  9.                 if (a[i]==1)
  10.                         for (j=i*i; j<=100; j+=i)  a[j]=0;

  11.         for (i=2; i<=100; i++) if (a[i]==1) cout<<i<<' ';

  12.         return 0;
  13. }
复制代码

作者: admin    时间: 2022-3-27 14:54
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int a[10],i,k,x1,x2,x3;
  4. bool check()// 检查a数组中1-9 是否都出现
  5. {

  6.         bool b=1;
  7.         for (i=1; i<=9; i++) if (a[i]!=1) b=0;
  8.         return b;
  9. }

  10. int main()
  11. {
  12.         for (x1=123; x1<=333; x1++)
  13.                 {
  14.                         for (i=1; i<=9; i++) a[i]=0; // 空的点名表
  15.                
  16.                         x2=x1+x1,x3=x1+x2;
  17.                         k=x1/100%10,a[k]++;// 画正字点名
  18.                         k=x1/10%10,a[k]++;// 画正字点名
  19.                         k=x1/1%10,a[k]++;// 画正字点名

  20.                         k=x2/100%10,a[k]++;// 画正字点名
  21.                         k=x2/10%10,a[k]++;// 画正字点名
  22.                         k=x2/1%10,a[k]++;// 画正字点名

  23.                         k=x3/100%10,a[k]++;// 画正字点名
  24.                         k=x3/10%10,a[k]++;// 画正字点名
  25.                         k=x3/1%10,a[k]++;// 画正字点名

  26.                         if (check()) cout<<x1<<' '<<x2<<' '<<x3<<endl;
  27.                 }
  28.         return 0;
  29. }
复制代码

作者: admin    时间: 2022-3-27 15:01
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int a[10],i,k,x1,x2;
  4. bool check()// 检查a数组中1-9 是否都出现
  5. {

  6.         bool b=1;
  7.         for (int i=0; i<=9; i++) if (a[i]!=0) b=0;
  8.         return b;
  9. }

  10. int main()
  11. {
  12.         cin>>x1>>x2;
  13.         for (i=0; i<=9; i++) a[i]=0;
  14.         while (x1>0)
  15.                 {
  16.                         k=x1%10,x1=x1/10;
  17.                         a[k]++;
  18.                 }
  19.         while (x2>0)
  20.                 {
  21.                         k=x2%10,x2=x2/10;
  22.                         a[k]--;
  23.                 }

  24.         if (check()) cout<<"Yes";
  25.         else cout<<"No";

  26.         return 0;
  27. }
复制代码





欢迎光临 华师一附中OI组 (http://hsyit.cn/) Powered by Discuz! X3.2