文章

1

粉丝

73

获赞

1

访问

755

头像
统计次数 题解:
P1848 清华大学2020年机试题
发布于2023年6月25日 09:16
阅读数 755

 每一位逐位计算

代码如下:

#include <iostream>
#include <string.h>
#include <math.h>

using namespace std;

int stanum(int n, int k){
    int sum=0, temp=n, len=0;
    int s[7];
    for(int j=0; j<7; j++){
        if(temp==0){
            break;
        }
        s[j]=temp%10;
        temp/=10;
        len++;
    }
    temp=n;
    for(int i=len-1; i>=0; i--){
        
        if(s[i]<k){
            sum+=int(pow(10, i))*(n/int(pow(10, i+1)));
        }
        if(s[i]==k){
            sum+=temp%(int(pow(10, i)));
            sum++;
            sum+=int(pow(10, i))*(n/int(pow(10, i+1)));
        }
        if(s[i]>k){
            sum+=int(pow(10, i))*(n/int(pow(10, i+1))+1);
        }
        temp%=(int(pow(10, i)));
    }
    return sum;
}

int main()
{
    int n, k;
    while(cin>>n>>k)
    {
       cout<<stanum(n, k)<<endl;
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发