从1到非负整数n中1出现的次数 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数? 为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次, 但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化, 可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。

/*
从1到非负整数n中1出现的次数
求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?
为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,
但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,
可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。
*/

import java.util.*;

public class Class36 {

public int NumberOf1Between1AndN_Solution(int n){
int count = 0;
for(int i = 1; i <= n; i++){
String str = Integer.toString(i);
int length = str.length();
for(int j = 0; j < length; j++){
char mychar = str.charAt(j);
if(mychar == ‘1‘){
count++;
}
}
}
return count;
}

public void test(){
int n = 13;
System.out.println(NumberOf1Between1AndN_Solution(n));
}

public static void main(String[] args) {
// TODO Auto-generated method stub
Class36 c = new Class36();
c.test();

}

}

原文地址:https://www.cnblogs.com/zhuozige/p/12516121.html

时间: 2024-08-06 16:18:20

从1到非负整数n中1出现的次数 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数? 为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次, 但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化, 可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。的相关文章

51nod p1175 区间中第K大的数

1175 区间中第K大的数 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 一个长度为N的整数序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有数中,第K大的数是多少. 例如: 1 7 6 3 1.i = 1, j = 3,k = 2,对应的数为7 6 3,第2大的数为6. Input 第1行:1个数N,表示序列的长度.(2 <= N <= 50000) 第2 - N + 1行:每行1个数,对应序列中的元素.(0 <= S[i] <

1到100的所有整数中出现多少次数字9

★编写程序数一下1到100的所有整数中出现多少次数字9 #include <stdio.h> int main() { int i = 1; int count = 0;            //用于对数字个数的统计 while (i <= 99) { if (i % 10 == 9)        //获得个位为9的数字 { printf("%d\t", i); count++; } if (i % 100 - i % 10 == 90)   //获得90~99的

Openjudge-计算概论(A)-能被3,5,7整除的数

描述: 输入一个整数,判断它能否被3,5,7整除,并输出以下信息:1.能同时被3,5,7整除(直接输出3 5 7,每个数中间一个空格):2.能被其中两个数整除(输出两个数,小的在前,大的在后.例如:3 5或者 3 7或者5 7,中间用空格分隔)3.能被其中一个数整除(输出这个除数)4.不能被任何数整除:(输出小写字符'n',不包括单引号)输入一个数字输出一行数字,从小到大排列,包含3,5,7中为该输入的除数的数字,数字中间用空格隔开样例输入 0 5 15 105 样例输出 3 5 7 5 3 5

转载【趣味算术】能被2、3、5、7、9、11、13整除的数的特点

原文地址  http://blog.sina.com.cn/s/blog_76b0cde40100t32r.html 被2整除的数是偶数. 被3整除的数必须各个位数上的数加起来为三的倍数,比如136,1+3+6=10不行,147=1+4+7=12,就可以. 被5整除个位为0或者5. 能被7整除的数的特征  一个数割去末位数字,再从留下来的数中减去所割去数字的2倍,这样,一次次减下去,如果最后的结果是7的倍数(包括0),那么,原来的这个数就一定能被7整除.   这种方法叫“割减法”.此法还可简化为

笔试算法题(15):-1到N中包含1的数字的个数 &amp; 连续和为N的序列

出题:输入一个整数N,求从1到N这N个整数的十进制表示中'1'出现的次数: 分析: 从左向右处理string表示的数字:当前数字长度为n,判断最左边一位数字字符: 如果是0,则直接递归下一位: 如果是1,则计数有两个来源,一个是n位数数字(实际就是除去最高位之后的数字大小,加上1,当其余位全部为0的时候),另一个是n-1,n-2,--,1位数字,使用SpecialPower可以计算: 如果是其他数字,则计数有两个来源,一个是n,n-1,n-2,--,1位数字,使用SpecialPower可以计算

编写程序数一下 1到 100 的所有整数中出现多少次数字9。

思路:要判断整数中出现9 的次数,可以将整数的每一位都提出来在依次进行判断,是否为9. 方法:对与一个一位数来说,对10取余数就是它本身.如:7%10==7 对于一个两位数来说,提取个位数字:对10取余数,如17%10==7:提取十位数字:除以10 ,如:17/10==1 这样便可以将整数的每一位都取出.代码如下: #include<stdio.h>int main(){int i;int sum = 0;for (i = 0;i < 100;i++){if (i % 10 == 9)/

java循环练习:输入一个字符串,统计该字符串中分别包含多少个数字,多少个字母,多少个其他字符

package practiceGO; import java.util.Scanner; /*  * 3.输入一个字符串,统计该字符串中分别包含多少个数字,多少个字母,多少个其他字符  */ public class Cto { public static void main(String[] args) {         int englishCount = 0;// 英文字母个数         int spaceCount = 0;// 空格个数         int numCoun

转:最小区间:k个有序的数组,找到最小区间使k个数组中每个数组至少有一个数在区间中

转:http://www.itmian4.com/thread-6504-1-1.html 最小区间原题 k个有序的数组,找到最小的区间范围使得这k个数组中,每个数组至少有一个数字在这个区间范围内.比如: 数组1:[4, 10, 15, 24, 26] 数组2:[0, 9, 12, 20] 数组3:[5, 18, 22, 30] 最小的区间是[20, 24],这个区间包含了数组1中的24,数组2中的20,数组3中的22 思考时间~~~ 分析 该题看起来还算比较简单,大家通常都会想到:为每一个数组

输入任意一个字符串,如:“abDEe23dJfd343dPOddfe4CdD5ccv!23rr”。 取出该字符串中所有的字母组成一个新的字符串。

#include <stdio.h>#include <string.h> /*输入任意一个字符串,如:“abDEe23dJfd343dPOddfe4CdD5ccv!23rr”. 取出该字符串中所有的字母组成一个新的字符串.*/ void main(){ char oldStr[100] = "abDEe23dJfd343dPOddfe4CdD5ccv!23rr"; char newStr[100]; int i = 0,j = 0; for(i = 0; i