zoukankan      html  css  js  c++  java
  • Codeforces 861 A k-rounding 数论

      题目链接: http://codeforces.com/contest/861/problem/A

      题目描述: 给你一个n, 一个k, 让你求n的所有倍数至少以k个0结尾的那个数

      解题思路: 质因数分解出2, 5,  如果min(cnt2, cnt5) >= k, 直接输出, 剩下少的补全就可以了

      代码: 

    #include <iostream>
    #include <cstdio>
    #include <map>
    #include <iterator>
    #include <string>
    #include <algorithm>
    #include <vector>
    #include <cmath>
    using namespace std;
    
    typedef long long ll;
    
    ll f(ll a, ll b) {
        ll ret = 1;
        for( ll i = 1; i <= b; i++ ) {
            ret *= a;
        }
        return ret;
    }
    int main() {
        int n, k;
        cin >> n >> k;
        int temp = n;
        int cnt2 = 0;
        int cnt5 = 0;
    //    cout << f(2,3) << endl;
        while(n%2==0) {
            cnt2++;
            n /= 2;
        }
        while(n%5==0) {
            cnt5++;
            n /= 5;
        }
    //    cout << cnt2 << " " << cnt5 << endl;
        if( min(cnt2, cnt5) >= k ) {
            cout << temp << endl;
        }
        else {
            ll ans = temp;
            if(cnt2 < k) ans *= f(2,ll(k-cnt2));
            if(cnt5 < k) ans *= f(5,ll(k-cnt5));
            cout << ans << endl;
        }
        return 0;
    }
    View Code

      思考: 因为调用pow WA了一发, 自己写就好了啊, 别懒

  • 相关阅读:
    只用一个字节 计算象棋将帅之间可能的位置
    后缀数组学习
    java 构造不可变类集的使用方法
    topcoder SRM 639 div2
    navicat和pymysql
    表查询
    表的关系对应
    MySQl数据类型和条件限制
    复习之网络编程
    协程
  • 原文地址:https://www.cnblogs.com/FriskyPuppy/p/7614684.html
Copyright © 2011-2022 走看看