码迷,mamicode.com
首页 > 其他好文 > 详细

C. Kevin's Meme Reacts(UTPC Contest 11-06-20 Div. 2 (Beginner))

时间:2020-12-23 12:26:35      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:ace   遇到   code   就是   reac   color   contest   自己   for   

技术图片

 

 

 技术图片

 

 

题意

  这题大体意思就是你一开始给一个数1,之后每一天这个数都会自乘2,并且你可以在其中的任意一天把这个数加1,以此来得到你最终想要的数n,并且要求操作次数最少。

  题目链接:https://codeforces.com/gym/102830/problem/C

解析

  这种题其实遇到过好多次了,但是每次都想着下一次一定查题解结果拖到了自己把这种题解出来。

  可以理解为一种贪心算法,如果想得到这个数n,并且要求其操作数最少,就要尽量的少加1。

  即如果n为偶数就一直除以2,直到其为奇数;

  若n为奇数且不为1,就减一除以2,同时操作数加1;

  最后这两种情况都会化为1,所有在程序的最后加1。

AC代码

#include<iostream>
using namespace std;
int main()
{
    long long n;
    scanf("%lld",&n);
    long long op=0;
    if(n==1||n==2)
    {
        printf("1\n");
        return 0;
    }
    for(long long i=0;1;i++)
    {
        if(n==2||n==1)
        {
            op++;
            break;
        }
        if(n%2==0)
        {
            n/=2;
            continue;
        }
        else
        {
            op++;
            n--;
            n/=2;
        }
    }
    printf("%lld",op);
    return 0;
}

 

C. Kevin's Meme Reacts(UTPC Contest 11-06-20 Div. 2 (Beginner))

标签:ace   遇到   code   就是   reac   color   contest   自己   for   

原文地址:https://www.cnblogs.com/Elbow-613/p/14156655.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!