FNOI_TEST_1 a(模拟)

本文通过一个具体的C++实现案例,介绍了如何使用模拟算法解决特定的数学问题。通过对数字的分解和枚举,实现了对一定范围内所有整数的特定序列求和的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

连模拟都写不对了。。。太弱了。。。

#include <cstdio>
#include <cstring>
#include <cmath>
#define ll long long
ll l,r;
ll solve(ll x){//f[1]+...+f[x]
    ll res=0;int n=log10(x)+1,a[11];
    for(ll i=1,base=1;i<=n;++i,base*=10){//枚举第i位 
        a[i]=x%(base*10)/base;
        for(ll j=1;j<=9;++j){//枚举第i位的数字j的贡献 
            ll tmp=x/(base*10)*base;
            if(j==a[i]) tmp+=x%base+1;
            if(j<a[i]) tmp+=base;
            res+=j*tmp;
        }
    }
    return res;
}
int main(){
    freopen("a.in","r",stdin);
    freopen("a.out","w",stdout);
    scanf("%I64d%I64d",&l,&r);
    printf("%I64d\n",solve(r)-solve(l-1));
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值