华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1377|回复: 4
打印 上一主题 下一主题

周日下午精英版程序集

[复制链接]

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
跳转到指定楼层
楼主
发表于 2022-3-27 14:14:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
复习:
1、约瑟夫问题
回复

使用道具 举报

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
沙发
 楼主| 发表于 2022-3-27 14:14:49 | 只看该作者
  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. }
复制代码
回复 支持 反对

使用道具 举报

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
板凳
 楼主| 发表于 2022-3-27 14:16:55 | 只看该作者
  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. }
复制代码
回复 支持 反对

使用道具 举报

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
地板
 楼主| 发表于 2022-3-27 14:54:08 | 只看该作者
  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. }
复制代码
回复 支持 反对

使用道具 举报

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
5#
 楼主| 发表于 2022-3-27 15:01:46 | 只看该作者
  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. }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-11-2 14:28 , Processed in 0.102187 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表