进制数.C
考虑包含N位数字的K-进制数. 定义一个数有效, 如果其K-进制表示不包含两连续的0.
例:
1010230 是有效的7位数
1000198 无效
0001235 不是7位数, 而是4位数.
给定两个数N和K, 要求计算包含N位数字的有效K-进制数的总数.
假设2 <= K <= 10; 2 <= N; 4 <= N+K <= 18.
输入格式
两个十进制整数N和K
输出格式
十进制表示的结果
样例输入
2 10
样例输出
90
ACODE:
0与非0数列画图法:
#include<stdio.h> int main(){ int N,K,arr0[20],arr1[20]; scanf("%d%d",&N,&K); arr0[1] = 1, arr1[1] = K-1; for(int i=2; i<=N; i++){ arr0[i] = arr1[i-1]; arr1[i] = (arr0[i-1] + arr1[i-1])*(K-1); } printf("%d",arr1[N]); return 0; }
2-0(1-1)插空法:
long long fun(int x) { long long sum = 1; if (x == 0) { sum = 1; } else { for (int i = 1; i <= x; i++) { sum *= i; } } return sum; } long long fac(int n, int m) { return fun(n) / (fun(m) * fun(n - m)); } int main() { int n, k; scanf("%d%d", &n, &k); long long sum = 0; int i, litter; if (n % 2 == 0) { litter = n / 2; } else { litter = n / 2 + 1; } for (i = n; i >= litter; i--) { sum += fac(i, n - i) * pow(k - 1, i); } printf("%d", sum); return 0; }
Tech Otakus Save the World
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通