数1的个数

总时间限制: 
1000ms

内存限制: 
65536kB
描述

给定一个十进制正整数n,写下从1到n的所有整数,然后数一下其中出现的数字“1”的个数。

例如当n=2时,写下1,2。这样只出现了1个“1”;当n=12时,写下1,2,3,4,5,6,7,8,9,10,11,12。这样出现了5个“1”。

输入
正整数n。1 <= n <= 10000。
输出
一个正整数,即“1”的个数。
样例输入
12
样例输出
5
来源
习题(8-11) 医学部 2010 期末试题 尤朝

代碼實現:

 1 #include<cstdio>
 2 int n,ans;
 3 int main(){
 4     scanf("%d",&n);
 5     for(int i=1;i<=n;i++){
 6         if(i%10==1) ans++;
 7         if(i%100/10==1) ans++;
 8         if(i%1000/100==1) ans++;
 9         if(i%10000/1000==1) ans++;
10         if(i/10000==1) ans++;
11     }
12     printf("%d\n",ans);
13     return 0;
14 }

。。。

时间: 2024-11-03 21:24:11

数1的个数的相关文章

数对的个数(cogs610)

Description出题是一件痛苦的事情!题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A+B Problem,改用A-B了哈哈! 好吧,题目是这样的:给出一串数以及一个数字C,要求计算出所有A-B=C的数对的个数. (不同位置的数字一样的数对算不同的数对)Input Format第一行包括2个非负整数N和C,中间用空格隔开.第二行有N个整数,中间用空格隔开,作为要求处理的那串数.Output Format输出一行,表示该串数中包含的所有满足A-B=C的数对的个数.Sample Input4

cogs——C610. 数对的个数

http://cogs.pro/cogs/problem/problem.php?pid=610 Description出题是一件痛苦的事情!题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A+B Problem,改用A-B了哈哈! 好吧,题目是这样的:给出一串数以及一个数字C,要求计算出所有A-B=C的数对的个数. (不同位置的数字一样的数对算不同的数对)Input Format第一行包括2个非负整数N和C,中间用空格隔开.第二行有N个整数,中间用空格隔开,作为要求处理的那串数.Output

用户输入一个数字,找到所有能够除尽它的数的总个数

想不到我这个小学生也会做 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript">  //用户输入一个数字,找到所有能够除尽它的数的总个数  var num = window.prompt(

POJ3180(有向图强连通分量结点数&gt;=2的个数)

The Cow Prom Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1451   Accepted: 922 Description The N (2 <= N <= 10,000) cows are so excited: it's prom night! They are dressed in their finest gowns, complete with corsages and new shoes. T

AC日记——数1的个数 openjudge 1.5 40

40:数1的个数 总时间限制:  1000ms 内存限制:  65536kB 描述 给定一个十进制正整数n,写下从1到n的所有整数,然后数一下其中出现的数字“1”的个数. 例如当n=2时,写下1,2.这样只出现了1个“1”:当n=12时,写下1,2,3,4,5,6,7,8,9,10,11,12.这样出现了5个“1”. 输入 正整数n.1 <= n <= 10000. 输出 一个正整数,即“1”的个数. 样例输入 12 样例输出 5 来源 习题(8-11) 医学部 2010 期末试题 尤朝 思路

输入10个整数,把其中最小的数与第一个数交换,最大的数与最后一个数交换。

输入10个整数,把其中最小的数与第一个数交换,最大的数与最后一个数交换.使用3个函数解决问题: (1) 输入10个整数的函数 (2) 进行交换处理的函数 (3) 输出10个数的函数 输出格式 输出结果,一行一个数字 输入样例 2 1 3 4 5 6 7 8 9 0 输出样例 input done swap done 0 1 3 4 5 6 7 8 2 9 display done 1 #include <stdio.h> 2 3 void input(int a[]) 4 { 5 ______

位运算——数0的个数

最简单的方法 移位来运算:N>>=1;然后用N 同1进行"与"运算,来判断末尾是否为1 下面有更快的方法: 快速的方法:判断某一位置是否是1的一个方法,v&=(v-1); 最经典: ? 位操作比除.余操作的效率高了很多.但是,即使采用位操作,时间复杂度仍为O(log2v),log2v为二进制数的位数.那么,还能不能再降低一些复杂度呢?如果有办法让算法的复杂度只与"1"的个数有关,复杂度不就能进一步降低了吗? 同样用10 100 001来举例.如果

数组问题 1.行列有序二维数组中查找2.在一组数成对出现的数中有两个数只出现一次3.在移位数组中查找一个数

一.在一个二维数组中,每一行都按从左到右递增的顺序排序,每一列都按从上到下的递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路: 首先选取数组中右上角的数字.如果该数字等于要查找的的数字,查找过程结束:如果该数字大于要查找的数字,剔除这个数字所在的列:如果该数字小于要查找的数字,剔除这个数字所在的行.也就是说如果要查找的数字不在数组的右上角,则每一次都在数组的查找范围剔除一行或一列,这样每一步都可以缩小查找的范围. 实现过程如下: 运行结果如下:

Leetcode_001_TwoSum_求和为固定数的两个数的索引

题目描述 给定一个整型数组,在数组中找出两个数使这两个数的和为给定数,从小到大输出这两个数在数组中的位置(我们可以假定输出结果只有一个).例如,输入:N={1,4,8,20}, target=12,输出:index_1=2, index_2=3 方案一 描述 利用C++中的vector和unordered_map尽可能提升程序的运行效率,节约空间,并找出最后的结果.首先回顾一下vector和unordered_map的用法. vector vector是C++中的一种数据结构,更确切的说是一个类