寒假学习记录D28

1.Git的注册(学生计划),用法(B站)

2.算法

3.python


1.Git的注册(学生计划),用法(B站)

git的学生账户注册:

Request a discount - GitHub Educationicon-default.png?t=M0H8https://education.github.com/discount_requests/student_applicationgit的学习:

【狂神说Java】Git最新教程通俗易懂_哔哩哔哩_bilibiliicon-default.png?t=M0H8https://www.bilibili.com/video/BV1FE411P7B3?p=6&spm_id_from=pageDriverGitHub 到底怎么用?十分钟学会 GitHub 基础知识_哔哩哔哩_bilibiliicon-default.png?t=M0H8https://www.bilibili.com/video/BV1yo4y1d7UK?from=search&seid=2348662599817508479&spm_id_from=333.337.0.0


2.算法
 

题目描述

定义一个数字为幸运数字当且仅当它的所有数位都是4或者7。
比如说,47、744、4都是幸运数字而5、17、467都不是。
定义next(x)为大于等于x的第一个幸运数字。给定l,r,请求出next(l) + next(l + 1) + ... + next(r - 1) + next(r)。

输入描述:

两个整数l和r (1 <= l <= r <= 1000,000,000)。

输出描述:

一个数字表示答案。

示例1

输入

2 7

输出

33

示例2

输入

7 7

输出

7
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1e6 + 9;
typedef long long ll;
ll l, r;
ll luck[maxn];
int cnt;
ll ans;
void dfs(ll x) {//提前打表
    if(x >= 4444444444) {
        return ;
    }
    luck[cnt++] = x * 10 + 4;
    luck[cnt++] = x * 10 + 7;
    dfs(x * 10 + 4);
    dfs(x * 10 + 7);
}
int main() {
    cin >> l >> r;
    ios::sync_with_stdio(false);
    dfs(0);
    luck[cnt] = 4444444444;
    sort(luck, luck + cnt);
    int L = upper_bound(luck, luck + cnt, l) - luck;
    int R = upper_bound(luck, luck + cnt, r) - luck;
    for(int i = L; i <= R; i++) {
        ans += (min(luck[i], r) - l + 1) * luck[i];
        l = luck[i] + 1;
    }
    cout << ans << "\n";
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值