UESTC 1137 邱老师选妹子 dp:?这个难道不是暴力法

117 篇文章 2 订阅
4 篇文章 0 订阅

邱老师选妹子

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)
 

邱老师长得帅这是人尽皆知,于是追他的妹子就会很多。

但是你知道,邱老师是一个很专一的人,所以他心里面只能有一个人。

于是他决定从追他的众多妹子里挑选一个出来。于是酱神给邱老师出来一个主意,已知有一些妹子,恰好可以给她们从l到r排号,使得每一个妹子有

单独的数字,而正好有r-l+1个妹子。

酱神说,我们不能要运气不好的女孩,而酱神又给了两个数字62和4,如果妹子的排号里面有62(必须是连续的)或4,那么就排除他现在给你l和r,问

有多少妹子可以有幸在第一轮留下。

Input

输入的都是整数对l、r(0<l≤r<1000000),如果遇到都是0的整数对,则输入结束。

Output

每组数据输出占一行,对于每个l和r 输出有多少个妹子可以在第一轮不被排除

Sample input and output

Sample Input Sample Output
1 100
0 0
80

Hint

不好的数字为所有含有4或62的号码。例如:

62315 73418 88914

都属于不好的。但是,61152虽然含有6和2,但不是62连号

Source

2015 UESTC Training for Dynamic Programming
The question is from   here.

My Solution

暴力法分分钟过,只是不知道为什么,这个是在dp专题,☺☺
暴力的话 10^6*6,不会超时的。

从 l 到 r 枚举,分别用函数处理每个i
如果 i %10 为4,ans--;return
如果为2,则i /=`10;在看看是6则ans--;return;否则递归下去
但递归出 i == 0,则递归结束

#include <iostream>
#include <cstdio>
using namespace std;
int ans;

void solve(int x)
{
    if(x == 0) return;
    if(x % 10 == 4) {ans--;return;}
    else if(x % 10 == 2){ x /= 10;if(x %10 == 6) {ans--;return;} else solve(x);}
    else solve(x/=10);
}

int main()
{
    int l, r;
    while(scanf("%d%d", &l, &r)){
        if(l == 0 && r == 0) break;
        ans = r-l+1;
        for(int i = l; i <= r; i++){
            solve(i);
        }
        printf("%d\n", ans);
    }
    return 0;
}

Thank you!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值