【整数】 n 位正整数的个数

请输出满足以下条件的 n 位正整数的个数:
要求该n位整数的从高位开始前 1 位可以被 1 整除,前 2 位可以被 22 整除,前 3 位可以被 33 整除,前 4 位可以被 4*4 整除……。即该整数前 k 位都可被 k 平方整除。

输入:

n(0<=n<9)

输出:

符合该条件的n位正整数的数量
本题可要使用数组!

样例:

序号 测试输入 期待的输出 额外进程
1 1↵ 9↵ 0
2 2↵ 22↵ 0
3 8↵ 0↵ 0

思路

先观察样例,就会发现样例已经暗示我们了:当n>=8时,直接输出0
所以我们只需要考虑 1<=n<=7 的情况,那么最简单的方法当然是直接将这7个数算出来做一张映射表,直接一一对应:

代码1

#include <stdio.h>  int a[9] = {9,22,24,16,7,7,1,0,0};int main()
{  int n;  scanf("%d",&n);  printf("%d\n",a[n - 1]);
}

思路again

但是这样属实离谱了一点,虽然确实能过,也没啥没毛病,但万一老师想不给你分你也没办法,所以我们不妨试试直接暴力求解

代码2

#include <stdio.h>
#include <math.h>main()
{int n,i,j,counter = 0,p,flag;scanf("%d",&n);int l = pow(10,n-1),r = pow(10,n);for(i = l;i < r;i ++){for(j = 2,p = l,flag = 1;j <= n&&flag;j++){p /= 10;if((i/p)%(j*j) != 0) flag = 0;}if(flag) counter ++;}printf("%d\n",counter);
}

迭代法

通过观察不难发现,如果 ( x n . . . x 2 x 1 ) 10 (x_n...x_2x_1)_{10} (xn​...x2​x1​)10​满足条件,那么 ( x n . . . x 2 ) 10 (x_{n}...x_2)_{10} (xn​...x2​)10​也一定满足条件,所以其实只要从n = 1的情况开始迭代就好了,每次只需判断上一次满足条件的数乘10后加上0-9是否满足条件:

#include <stdio.h>int ori[30] = {0,1,2,3,4,5,6,7,8,9},sum[10] = {0,9},n;int main()
{scanf("%d",&n);for(int i = 2;i < n + 1;i ++){int temp[30] = {0};for(int j = 1;ori[j];j ++){int x = ori[j]*10,m = i*i;for(int k = 0;k < 10;k ++)if((x + k) % m == 0) temp[++sum[i]] = x + k;}for(int k = 1;k < 31;k ++) ori[k] = temp[k];}printf("%d\n",sum[n]);
}

【整数】 n 位正整数的个数相关推荐

  1. C语言编程>第十周 ⑧ 请编写函数fun,其功能是:将两个两位正整数x、y合并成一个整数放在z中。合并的方式是:将x的十位和个位依次放在z的十位和千位上,y十位和个位依次放在z的百位和个位上。

    例题:请编写函数fun,其功能是:将两个两位正整数x.y合并成一个整数放在z中.合并的方式是:将x的十位和个位依次放在z的十位和千位上,y十位和个位依次放在z的百位和个位上. 例如,当x=12,y=3 ...

  2. 14.C++读入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束

    代码: //2_9.cpp //读入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束 #include <iostream> using namespace std; int m ...

  3. 9.C++例2-10 输入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束。

    //例2-10 输入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束. #include <iostream> using namespace std; int main() { ...

  4. python输入一个三位整数、求逆序数_输入一个三位正整数,要求其输出对应的逆序数...

    针对" 输入一个三位正整数,要求其输出对应的逆序数 "的问题,下面由网络工程师-黎明为您解答: 1.第一步,我们第一要写开头: 2.#include 3.voidmain() 4. ...

  5. 领扣-191 位1的个数 Number of 1 Bits MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  6. python写整数逆位运算_简单了解python的一些位运算技巧

    前言 位运算的性能大家想必是清楚的,效率绝对高.相信爱好源码的同学,在学习阅读源码的过程中会发现不少源码使用了位运算.但是为啥在实际编程过程中应用少呢?想必最大的原因,是较为难懂.不过,在面试的过程中 ...

  7. 逆序输出1到4位正整数

    逆序输出1到4位正整数 作者: Turbo 时间限制: 1S 章节: 分支结构 问题描述 : 输入一个不多于4位的正整数,要求按逆序打印出各个位上的数字,例如原数为23,应输出32:如原数为8000, ...

  8. 191. 位1的个数 golang

    题目 位1的个数 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量). 示例 1: 输入:00000000000000000000000000001 ...

  9. python整数逆位运算_Python这些位运算的妙用,绝对让你大开眼界

    位运算的性能大家想必是清楚的,效率绝对高.相信爱好源码的同学,在学习阅读源码的过程中会发现不少源码使用了位运算.但是为啥在实际编程过程中应用少呢?想必最大的原因,是较为难懂.不过,在面试的过程中,在手 ...

最新文章

  1. 夺命雷公狗---node.js---3commonJs 与 nodeJs的简介
  2. 用共振频率去理解神经网络-将乙烯模型运行300次的数据
  3. android:使用audiotrack 类播放wav文件
  4. iphone屏幕镜像连电视_手机股票行情:在电视上投射或镜像安卓手机屏幕的三个简单步骤...
  5. 对聚集表查询的时候,未显式指定排序列的时候,默认查询结果的顺序一定是按照聚集索引顺序排序的吗...
  6. 关于用Linux桌面版当工作系统这件事
  7. 两个3*3*n旋转矩阵在第三维相乘
  8. python类中包含一个特殊的变量、它表示当前对象自身_知到APP教师职场礼仪第七单元章节测试网课答案大学课后答案...
  9. 心情随笔之纸包子假新闻 [2007年7月25日]
  10. 斯诺登给普通人开发了个「反监控」的 App
  11. 牛顿法求解方程的根(C语言)
  12. 介绍一款JS适用于现代Web浏览器的电子表格开源在线Excel
  13. ps切图后 JAVA开发_PS切图工具
  14. 基于片内Flash的提示音播放程序
  15. 软考(22)-网络存储、网络安全、网络规划与设计
  16. 微服务架构学习与思考(03):微服务总体架构图解
  17. opencv轮廓检测
  18. Cocos Creator 微信登录授权按钮适配
  19. 学术之声 | 专访北航教授洪晟:区块链应该管也能够管,而且要学会管
  20. 【漫画程序员涛哥】程序员是如何换灯泡的?

热门文章

  1. 618值得买手机排行:1500~4500元手机推荐来了,Top3闭眼买
  2. 双通道粒子滤波(PF)原理详解
  3. 正则表达式_CatGrep
  4. 新版本华为交换机开局远程登录那些坑(Telnet、SSH/HTTP避坑指南)
  5. 跟领导相处,这3件事不要精明,多一分傻气多一分福气
  6. macbook(A1466)安装deepin 后,安装摄像头驱动
  7. echarts常用属性X轴属性大全,下载按钮,横轴显示不全等
  8. Google Chrome(谷歌浏览器)修改网页背景颜色的办法
  9. Oracle 拼音排序
  10. 如何将货币类字符串类型变更为数值类型