今年是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; }