zoukankan      html  css  js  c++  java
  • 牛客 小乐乐和25

    链接:https://ac.nowcoder.com/acm/contest/301/J
    来源:牛客网

    题目描述

    小乐乐特别喜欢25这个数字,他想把所有的数字都变成25的倍数。
    现在小乐乐得到一个数字,想问问你最少用几次操作才可以把这个数字改造成25的倍数。
    对于一次操作我们可以把相邻的两位做交换,比如123经过一次操作之后就可以变成213或者132。

    输入描述:

    多组数据输入

    对于每组数据,只有一行输入一个整数n(1 <= n <= 1000000000)。

    输出描述:

    如果经过最少x次操作后,这个数就变成了25的倍数,那么输出x;

    如果这个数无论怎么变化都变不成25的倍数,输出-1.


    思博题

    先来分析一下如何出现25的倍数。 显然25的倍数要求数字的最后两位是(25,50,75,00)这四种情况中的一种。
    分别记录一下 2 5 7 0 最先出现的位置,不过这里要记录两个0的位置,然后再保存最小值就可以了
     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 
     5 int f(int e, int w){
     6     if(w==-1||e==-1)
     7         return 0x3f3f3f3f;
     8     if(w > e){
     9         return w+e;
    10     } else return w+e-1;
    11 }
    12 int main(){
    13     int n;
    14     while(scanf("%d",&n)!=EOF){
    15         int zero1=-1, zero2=-1;
    16         int two = -1, five=-1;
    17         int seven=-1;
    18         int len = 0;
    19         while(n){
    20             switch(n%10){
    21                 case 0:
    22                     if(zero1==-1)
    23                         zero1 = len;
    24                     else if(zero2==-1)
    25                         zero2 = len;
    26                     break;
    27                 case 2:
    28                     if(two==-1)
    29                         two = len;
    30                     break;
    31                 case 5:
    32                     if(five==-1)
    33                         five = len;
    34                     break;
    35                 case 7:
    36                     if(seven==-1)
    37                         seven = len;
    38                     break;
    39                 default:
    40                     break;
    41             }
    42             n/=10;
    43             len ++;
    44         }
    45         int ans = 0x3f3f3f3f;
    46 
    47         ans = min(ans,f(two,five));
    48         ans = min(ans,f(five,zero1));
    49         ans = min(ans,f(seven,five));
    50         ans = min(ans,f(zero2,zero1));
    51 
    52         if(ans == 0x3f3f3f3f)
    53             printf("-1
    ");
    54         else
    55             printf("%d
    ",ans);
    56     }
    57     return 0;
    58 }
    View Code
  • 相关阅读:
    获取发布的头条的url,避免点击打开新的页面
    下载图片 保存至本地 返回路径
    线程运行的3个状态
    程序并发执行所需付出的时空开销
    web metrics dashboard 数据分析工具 看板 从可视化发现问题 避免sql重复写 调高效率
    Binary safe
    simple dynamic string
    a
    a
    从业务角度 减少代码执行的时间 和 因长时间执行的而带来的代码复杂性 日志恢复数据
  • 原文地址:https://www.cnblogs.com/kongbb/p/10060683.html
Copyright © 2011-2022 走看看