zoukankan      html  css  js  c++  java
  • 【From Hero to Zero】题解

    先把题目放上来:


    题目描述:

    有一天,小明给了你两个数字和,现在,你需要对数字n进行一下操作:对于每一步操作,你可以选择下面其中一个项目:将的值减少.如果能被整除,可以使比如:,你可以进行下列操作:请你计算出数字变为时最少需要的操作数。


    输入格式:

    第一行输入一个整数n,表示数据个数
    接下来行n,每行个整数和


    输出格式

    将数字变为的最小次数


    输入样例:
    2
    593
    1000000000000000000


    输出样例:
    8
    19


    这道题其实也并不难,但是考试时就无脑计算然后就情理之中而又意料之外地 TLE 了。。。
    这道题其实就是一道水题,只要稍微的动一下脑筋就好了,注释写在代码上:

    代码

    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define ll long long//保险起见
    using namespace std;
    
    int main() {
    	ll t;
    	scanf("%lld", &t);//多组输入
    	while (t--) {
    		ll n, k;
    		ll ans = 0;
    		scanf("%lld %lld", &n, &k);
    		while (n) {
    			if (n % k == 0) {//因为题目中说了,k 不等于 1,所以除以 k 一定比一直减要优,
    				n /= k;
    				ans ++;
    			}//常规操作
    			else {
    				ans += n % k;//重点。 假如说现在 n 不能被 k 整除,n 就一定会减去 n % k,我们就不让他一遍一遍去减了
    				n -= n % k; //减去
    			}
    		} 
    		printf("%lld
    ", ans);//常规操作
    	}
    	return 0;
    }
    

    哎,考试时碰到水题还是要仔细一点,不然总掉坑里!!!

  • 相关阅读:
    ES monitoring
    my stackoverflow
    ES 监控
    Natural Language Processing 课程,文章,论文
    搜索引擎名著
    https://medium.com/netflix-techblog/linux-performance-analysis-in-60-000-milliseconds-accc10403c55
    MySQL 性能跟踪方法
    JAVA CAS原理深度分析 volatile,偏向锁,轻量级锁
    spark-architecture-shuffle
    Linux performance commands and tool
  • 原文地址:https://www.cnblogs.com/cqbzyanglin/p/13519182.html
Copyright © 2011-2022 走看看