这代码算什么算法,求问
  • 板块灌水区
  • 楼主_Tb_
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/7/4 14:25
  • 上次更新2024/7/4 16:15:04
查看原帖
这代码算什么算法,求问
1032232
_Tb_楼主2024/7/4 14:25

rt,不知道我这用的什么算法 P2602

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n[10];
int apow(int a,int b){
    int res=1;
    while(b--)res*=a;
    return res;
}
signed main(){
    int a,b;
    scanf("%lld %lld",&a,&b);
    bool f1=false;
    for(int i=1;i<=13;i++)if(apow(10,i)==b)f1=true;
    int p=(int)ceil(log10(b));
    if(f1)p++;
    for(int t=1;t<=p;t++){
        int w=apow(10,t-1);
        int a1=a/w,b1=b/w;
        int a2=a1+1,b2=b1-1;
        if(b2>=a2){
            int s1=(b2-a2+1)/10;
            for(int i=0;i<=9;i++)n[i]+=s1*w;
            for(int i=s1*10+a2;i<=b2;i++)n[i%10]+=w;
        }
        if(a1!=b1){
            n[a1%10]+=a2*w-max(a,w);
            n[b1%10]+=b-b1*w+1;
        }
        else n[a1%10]+=b-a+1;
    }
    for(int i=0;i<=9;i++)printf("%lld ",n[i]);
    return 0;
}
2024/7/4 14:25
加载中...