每日刷题33

资源限制
内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s
  一个整数的反置数指的是把该整数的每一位数字的顺序颠倒过来所得到的另一个整数。如果一个整数的末尾是以0结尾,那么在它的反置数当中,这些0就被省略掉了。比如说,1245的反置数5421,而1200的反置数是21。请编写一个程序,输入两个整数,然后计算这两个整数的反置数之和sum,然后再把sum的反置数打印出来。例如,如果用户输入:435和754,则输出结果为199。要求:由于在本题中需要多次去计算一个整数的反置数,因此必须把这部分代码抽象为一个函数的形式。
输入:
  435 754
  输出:
  199
解答;

#include<iostream>
using namespace std;
typedef long long ll;
ll n,m,sum;
int weishu(int n){
    
    
    int counts=0;
    while(n){
    
    
        counts++;
        n=n/10; 
    }
    return counts;
}
int pown(ll n,ll m){
    
    
    ll sum = 1;
    while(m){
    
    
        if(m%2!=0)
        sum = sum*n;
        m=m/2;
        n = n*n;

    }
    return sum;
}
int fanzhi(ll n,ll count){
    
    
    int newnum = 0;
    while (count--)
    {
    
    
        int temp = n%10;
        if(temp!=0){
    
    
        newnum += temp*pown(10,count);}
        n/=10;
        
    }
    return newnum;
    
}
int main(){
    
    
    cin>>n>>m;
    ll a = fanzhi(n,weishu(n));
    ll b = fanzhi(m,weishu(m));
    ll k = a+b;
    cout<<fanzhi(k,weishu(k));
}

猜你喜欢

转载自blog.csdn.net/weixin_47988292/article/details/129918184