2025 程序设计竞赛选拔赛(实训 8)1、 排列数由 1 个“1〞,2 个“2〞,k 个“3〞 (1≤k≤6)能组成多少个不同的排列
输入 k, 输出排列个数
k=4, 输出: k=5, 输出: (1) 设计要点注意到 1 个“1〞,2 个“2〞,k 个“3〞组成 k+3 位数,首先通过 k+2 个 10 相乘计算k+3 位数的起点 b=10^(k+2),为枚举提供范围 t(b—4*b-1)
为了检测 k+3 位数 t 含有多少个数字 1、2、3,每个 k+3 位整数 t 赋给 d(以保持 t 不变),然后通过 k+3 次求余先后别离出 t 的 k+3 个数字 c:if(c==1) f++, 统计整数 t 中数字 1 的个数 f;if(c==2) g++, 统计整数 t 中数字 2 的个数 g;if(c==3) h++, 统计整数 t 中数字 3 的个数 h
检测每一个 k+3 位整数:假设 f=1 and g=2 and h=k,那么应用 s 进行统计
最后输出所得排列个数 s
〔2〕 程序设计// 排列数#include void main(){ int c,f,g,h,i,j,k; long b,d,s,t; printf(" 请输入数字 3 的个数 k (1≤k≤6): "); scanf("%d",&k); b=1; s=0; for(i=1;i