今年是2019年,KiKi想知道1~2019中有多少个包含数字9的数。包含数字的数是指有某一位是“9”的数,例如“2019”、“199”等。
#include<stdio.h>
int main()
{
int i , one , ten , hun , kilo , i_output = 0;
for( i = 1 ; i <= 2019 ; i++ )
{
one = i % 10;//个位
kilo = i / 1000;//千位
hun = (i - kilo * 1000) / 100;//百位
ten = (i - kilo * 1000 - hun * 100) / 10;//十位
if( one == 9 || kilo == 9 || hun == 9 ||ten == 9) i_output++;
}
printf("%d",i_output);
} #include <stdio.h>
int main()
{
int n,sum=0;
for(n=1;n<=2019;n++)
{
if((n+1)%10==0||(n+10)%100==0||(n+100)%1000==0)//9 90 190 1900 1990等类似的包含9的整数
{
sum++;
}
else if(n/100+1==(n+10)/100||n/1000+1==(n+100)/1000)//9x x9x 9xx 19xx 1x9x等上述判断条件不能判断出来的包含9的整数
{
sum++;
}
}
printf("%d",sum);
return 0;
} #include <stdio.h>
int main()
{
int i,j,n,count=0;
for(i=1;i<=2019;i++){
n=i; //用n继承i的值进行计算
for(j=0;;j++){ //对比当前数值从个位数开始的每一位数的值
if(n==9||n%10==9) {count++;break;} //从1到2019每次数值中有9就count加1直接跳出
n=n/10;
if(n==0) break; //个位数也不是9就跳出
}
}
printf("%d",count);
return 0;
} import java.util.Scanner;
public class Main{
public static void main(String[] args){
int index=0, temp;
int counter=0;
for(index=0; index<2020; index++){
temp = index;
while(temp>0){
if(temp % 10 == 9){
counter++;
break;
}
temp = temp/10;
}
}
System.out.println(counter);
}
} #include <bits/stdc++.h>
using namespace std;
int main(){
int a, b, c, d;
int count = 0;
for(int i=1; i<=2019; i++){
a = i%10; // 个位
b = i/10%10; // 十位
c = i/10/10%10; // 百位
d = i/10/10/10%10; // 千位
if(a==9 || b==9 || c==9 || d==9)
count++;
}
cout<<count;
return 0;
} #include <stdio.h>
/* 每100个数字中有19个带9的数字 */
/* 每1000个数字中有9*19+100个带9的数字 */
/* 0~2019中带9的数字 = 2*(9*19+100)+2 = 544 */
int main()
{
printf("544\n");
return 0;
} #include <stdio.h>
int main(void)
{
int count = 0;
int i, t1, t2, t3, t4;
for (i = 1; i <= 2019; i++)
{
if (i < 10)
{
if (0 == i % 9)
{
count++;
}
}
else if (i >= 10 && i < 100)
{
t1 = i / 10;
t2 = i % 10;
if (t1 == 9 || 9 == t2)
{
count++;
}
}
else if (i >= 100 && i < 1000)
{
t1 = i / 100;
t2 = i / 10 % 10;
t3 = i % 10;
if (t1 == 9 || 9 == t2 || t3 == 9)
{
count++;
}
}
else
{
t1 = i / 1000;
t2 = i / 100 % 10;
t3 = i / 10 % 10;
t4 = i % 10;
if (t1 == 9 || 9 == t2 || t3 == 9 || 9 == t4)
{
count++;
}
}
}
printf("%d\n", count);
return 0;
} //可以用循环取数运算,拆分每一位数是最简单暴力的解法;#include <stdio.h>
int main()
{
int i, count=0;
for(i=1; i<=2019; i++)
{
int m = i;
while(m > 0) //易被忽略的一点
{
if(m % 10 == 9) //如果某数个位上是9
{
count++; //计数+1
break; //跳出循环,检测下一个数
}
else
m = m/10; //否则截去个位,继续检查是否可以对10取余为9
}
}
printf("%d\n", count);
return 0;
}
#include <stdio.h>
//组合排列啊!
int main(){
int count = 0;
//一位数 1个
//二位数 9+10-1
//由此可得 100内含有 19个
//同理 1000内含有9*19+100
count = 9*19+100;
//2019以内含9的数字个数
count = count * 2 + 2;//加上2009与2019
printf("544\n");
return 0;
} #include <stdio.h>
#include <math.h>
int main()
{
int flag=0;
for(int i=1;i<=2019;i++)
{
if(i==9||i/10==9||i%10==9||i%100==9||i/10%10==9||i%10==9||i/100%10==9|i/10%100==9||i%10==9)
{
flag++;
}
}
printf("%d",flag);
return 0;
}
#include<iostream>
using namespace std;
int main(){
int n=1;
int m=0;
while(n<=2019){
if(n%10==9||n/10%10==9||n/100%10==9)
m++;
n++;
}
cout<<m;
}