青岛建设英文网站建设,和城乡建设厅网站,python做的网站如何部署,建筑模型题目描述 小明非常不喜欢数字 2#xff0c;包括那些数位上包含数字 2 的数。如果一个数的数位不包含数字 2#xff0c;小明将它称为洁净数。
请问在整数 1 至 n 中#xff0c;洁净数有多少个#xff1f;
输入描述 输入的第一行包含一个整数 n(1≤n≤10^6)。
输出描述 输…题目描述 小明非常不喜欢数字 2包括那些数位上包含数字 2 的数。如果一个数的数位不包含数字 2小明将它称为洁净数。
请问在整数 1 至 n 中洁净数有多少个
输入描述 输入的第一行包含一个整数 n(1≤n≤10^6)。
输出描述 输出一行包含一个整数表示答案。
输入输出样例 示例 输入
30 输出
18 运行限制 最大运行时间1s 最大运行内存: 256M 所需变量 int shuwei;//代表没位数上是多少 int n;//代表终止条件的n int sum 0;//代表中共有多少个洁净数初始化为0 int i;//循环变量 思路:我们首先要知道判断一个数的数位上是否有2如果2我们就返回0如果没有就返回一具体做法就是首先把每位都分别取出来然后对其进行判断是否是2如果是2直接就返回0如果不是2那我们接着判断直到全部不为2或者有一个就终止判断条件这样我们就跳出循环
int solution(int a){int shuwei 0;while(a0){shuwei a%10;if(shuwei 2){return 0;}a a/10;}return 1;
}对于程序main函数我们首先要获取n得到n之后我们就不断的将1到n中的数不断输入解决函数中以此判断是否为洁净数最后如果每次判断返回1那么我们总数就1最后得到总数sum输出出来就可以了 该算法本人认为比较优如果有更好的想法欢迎q我 代码如下编译器是dev语言是C语言
#include iostream
using namespace std;
int solution(int a){int shuwei 0;while(a0){shuwei a%10;if(shuwei 2){return 0;}a a/10;}return 1;
}
int main()
{int n;int i,sum 0;cinn;for(i 1;in;i){if(solution(i)){sum;}}coutsumendl;return 0;
}