【整数】 n 位正整数的个数
【整数】 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...x2x1)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 位正整数的个数相关推荐
- C语言编程>第十周 ⑧ 请编写函数fun,其功能是:将两个两位正整数x、y合并成一个整数放在z中。合并的方式是:将x的十位和个位依次放在z的十位和千位上,y十位和个位依次放在z的百位和个位上。
例题:请编写函数fun,其功能是:将两个两位正整数x.y合并成一个整数放在z中.合并的方式是:将x的十位和个位依次放在z的十位和千位上,y十位和个位依次放在z的百位和个位上. 例如,当x=12,y=3 ...
- 14.C++读入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束
代码: //2_9.cpp //读入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束 #include <iostream> using namespace std; int m ...
- 9.C++例2-10 输入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束。
//例2-10 输入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束. #include <iostream> using namespace std; int main() { ...
- python输入一个三位整数、求逆序数_输入一个三位正整数,要求其输出对应的逆序数...
针对" 输入一个三位正整数,要求其输出对应的逆序数 "的问题,下面由网络工程师-黎明为您解答: 1.第一步,我们第一要写开头: 2.#include 3.voidmain() 4. ...
- 领扣-191 位1的个数 Number of 1 Bits MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- python写整数逆位运算_简单了解python的一些位运算技巧
前言 位运算的性能大家想必是清楚的,效率绝对高.相信爱好源码的同学,在学习阅读源码的过程中会发现不少源码使用了位运算.但是为啥在实际编程过程中应用少呢?想必最大的原因,是较为难懂.不过,在面试的过程中 ...
- 逆序输出1到4位正整数
逆序输出1到4位正整数 作者: Turbo 时间限制: 1S 章节: 分支结构 问题描述 : 输入一个不多于4位的正整数,要求按逆序打印出各个位上的数字,例如原数为23,应输出32:如原数为8000, ...
- 191. 位1的个数 golang
题目 位1的个数 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量). 示例 1: 输入:00000000000000000000000000001 ...
- python整数逆位运算_Python这些位运算的妙用,绝对让你大开眼界
位运算的性能大家想必是清楚的,效率绝对高.相信爱好源码的同学,在学习阅读源码的过程中会发现不少源码使用了位运算.但是为啥在实际编程过程中应用少呢?想必最大的原因,是较为难懂.不过,在面试的过程中,在手 ...
最新文章
- 夺命雷公狗---node.js---3commonJs 与 nodeJs的简介
- 用共振频率去理解神经网络-将乙烯模型运行300次的数据
- android:使用audiotrack 类播放wav文件
- iphone屏幕镜像连电视_手机股票行情:在电视上投射或镜像安卓手机屏幕的三个简单步骤...
- 对聚集表查询的时候,未显式指定排序列的时候,默认查询结果的顺序一定是按照聚集索引顺序排序的吗...
- 关于用Linux桌面版当工作系统这件事
- 两个3*3*n旋转矩阵在第三维相乘
- python类中包含一个特殊的变量、它表示当前对象自身_知到APP教师职场礼仪第七单元章节测试网课答案大学课后答案...
- 心情随笔之纸包子假新闻 [2007年7月25日]
- 斯诺登给普通人开发了个「反监控」的 App
- 牛顿法求解方程的根(C语言)
- 介绍一款JS适用于现代Web浏览器的电子表格开源在线Excel
- ps切图后 JAVA开发_PS切图工具
- 基于片内Flash的提示音播放程序
- 软考(22)-网络存储、网络安全、网络规划与设计
- 微服务架构学习与思考(03):微服务总体架构图解
- opencv轮廓检测
- Cocos Creator 微信登录授权按钮适配
- 学术之声 | 专访北航教授洪晟:区块链应该管也能够管,而且要学会管
- 【漫画程序员涛哥】程序员是如何换灯泡的?