没有合适的资源?快使用搜索试试~ 我知道了~
2021年程序设计竞赛基础实训.doc
0 下载量 117 浏览量
2022-12-18
01:17:11
上传
评论
收藏 53KB DOC 举报
温馨提示
试读
15页
2021年程序设计竞赛基础实训.doc
资源推荐
资源详情
资源评论
程序设计竞赛基本实训 31
1
8 记录
试记录具有数字 7 且不能被 7 整除 m 位整数个数 s1,并指出这 s1 个数中不
具有数字 4 整数个数 s2。
输入 m,输出 s1,s2。
m=5,输出:
m=6,输出:
(1) 设计要点
一方面通过乘 m-1 个 10 计算 m 位数起点 b=10^(m-1),为枚举提供范畴
t(b—10*b-1)。
为了检测 m 位数 t 具有多少个数字 7,每个 m 位整数 t 赋给 d(以保持 t 不
变),然后通过 m 次求余先后分离出 tm 个数字 c,if(c==7) f++,记录整数 t 中
数字 7 个数 f。
同步记录数字 4 个数 g。
如果 f>0,阐明整数 t 中具有数字 7。如果 g=0,阐明整数 t 中不含数字 4。
对每一种 m 位整数,据 f>0 && t%7>0,s1 作相应记录。据 f>0 && t%7>0 &&
g==0,s2 作相应记录。
(2) 程序设计
// 记录含数字 7 且不能被 7 整除 m 位整数个数 s1,其中不含数字 4 个数 s2
#include <stdio.h>
void main()
{ int c,f,g,i,j,m;
long b,d,s1,s2,t;
printf(" 请输入位数 m (2<=m<=9):"); scanf("%d",&m);
b=1;s1=0;s2=0;
for(i=2;i<=m;i++) b=b*10; // 计算 m 位数起点
for(t=b;t<=10*b-1;t++) // 枚举每一种 m 位数
{ d=t;
f=0;g=0;
for(j=1;j<=m;j++)
{ c=d%10;d=d/10;
if(c==7) f++; // 记录数字 7 个数
if(c==4) g++; // 记录数字 4 个数
}
if(f>0 && t%7>0) s1++; // 记录含数字 7 且不能被 7 整
除数个数
if(f>0 && t%7>0 && g==0) s2++;// 记录其中不含数字 4 个数
}
printf(" s1=%ld ,s2=%ld \n",s1,s2);
}
(3) 程序运营示例
请输入位数 m (2<=k<=9):5
s1=32152 ,s2=20412
请输入位数 m (2<=k<=9):6
s1=366522 ,s2=208300
变通 1:试记录具有数字 7 且能被 7 整除没有重复数字 m 位整数个数 s1,并
指出其中最大一种数。
为了比较与否存在重复数字,设立 f 数组,f[3]=2 为 2 个数字“3”。
#include <stdio.h>
void main()
{ int c,e,g,i,j,m,f[10];
long b,d,s1,t;
printf(" 请输入位数 m (2<=m<=9):"); scanf("%d",&m);
b=1;s1=0;
for(i=2;i<=m;i++) b=b*10; // 计算 m 位数起点
for(t=b;t<=10*b-1;t++) // 枚举每一种 m 位数
{ d=t;
for(j=0;j<=9;j++) f[j]=0; // 数组清零
for(j=1;j<=m;j++)
{ c=d%10;d=d/10;
f[c]++; // 记录数字 c 个数
}
for(g=0,j=0;j<=9;j++)
if(f[j]>1) g=1; // 存在重复数字标注 g=1
if(f[7]>0 && t%7==0 && g==0)
{s1++;e=t;} // 记录个数,并把满足条件数赋值给
剩余14页未读,继续阅读
资源评论
yyyyyyhhh222
- 粉丝: 412
- 资源: 6万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功