华为面试算法题求助
给三个数,a,b,n,输出a到b范围内数中不包含n的数的个数,n范围是0到9,这个不用暴力怎么写,比如说a为1,b为20,n为2,结果为17,有无大佬给个解答
全部评论
数位dp,这个是hard难度的题,面试手撕属于太难了
#include<stdio.h>
int main() {
int t , a=1, b=20, n=2,w,k=0;
scanf_s("%d%d%d", &a, &b, &n);
for (w = a; w <= b; ++w) {
t = w;
do {
if ((t< 10 )&& (t == n))break;
else if ((t>=10)&&(t%10 == n)) break;
else t = t / 10;
} while (t != 0);
if (t==0)
{
k++;
printf("%d\n", w);
}
}
printf("有%d个数", k);
}
数位dp吧
感觉需要把个十百每位取出来分别与n进行比较
数位dp,或者数值范围小的话,直接暴力判断
把包含的算出来减掉
这不是排列组合问题嘛,每个位不能取n
相关推荐
03-15 15:44
南阳理工学院 运营 点赞 评论 收藏
分享
02-26 10:20
门头沟学院 测试工程师
拒绝996的悲伤蛙:此贴终结|给路过的牛友分享一下心得👇
实习的时候不要光埋头干活,身边的大佬同事才是真·宝藏人脉!大胆请教他们工作以及职场上的问题 点赞 评论 收藏
分享
