2 条题解

  • 1
    @ 2025-7-8 16:49:18

    数位dp

    #include <bits/stdc++.h>
    using namespace std;
    const int N=1e5+5;
    long long a,b,numa[10],numb[10],pow10[N],dp[N];
    void init(){
    	pow10[0]=1;
    	for(int i=1;i<=12;i++){
    		dp[i]=dp[i-1]*10+pow10[i-1];
    		pow10[i]=pow10[i-1]*10;
    	}
    }void solve(long long n,long long *ans){
    	int len=0,tmp[15];
    	while(n){
    		tmp[++len]=n%10;
    		n/=10;
    	}for(int i=len;i>=1;i--){
    		for(int j=0;j<=9;j++){
    			ans[j]+=dp[i-1]*tmp[i];
    		}for(int j=0;j<tmp[i];j++){
    			ans[j]+=pow10[i-1];
    		}long long t=0;
    		for(int j=i-1;j>=1;j--){
    			t=t*10+tmp[j];
    		}ans[tmp[i]]+=t+1;
    		ans[0]-=pow10[i-1];
    	}
    }
    int main(){
    	cin>>a>>b;
    	init();
    	solve(a-1,numa);
    	solve(b,numb);
    	for(int i=0;i<=9;i++){
    		cout<<numb[i]-numa[i]<<" "; 
    	}
    }
    
    
    • 0
      @ 2021-10-29 19:52:07

      a = int(input())

      while (a != 1):

      if (a % 2 != 0):
      
          l = (a * 3 + 1)
      
          print("{:.0f}*3+1={:.0f}".format(a, l))
      
          a = l
      
      else:
      
          k = (a / 2)
      
          print("{:.0f}/2={:.0f}".format(a, k))
      
          a = k
      

      print("End")

      • 1

      信息

      ID
      485
      时间
      1000ms
      内存
      512MiB
      难度
      10
      标签
      递交数
      52
      已通过
      1
      上传者