• poj3210


    题意:很难理解,意思是,给出一些硬币,总数一定,要求对于任何一种情况(无论几个正面,几个反面)都恰好进行k次操作,不多不少,使得朝上的面统一。每次操作可以翻一枚硬币。输入硬币总数,求所有满足条件的k中最小的。无解输出no solution

    分析:利用k的奇偶性。对于总数为偶数的情况。以六个为例,对于111111和111110,一个只能进行奇数次操作,另一个只能进行偶数次操作。k不可能既是奇数又是偶数,所以必定无解。 对于总数为奇数的情况。以五个为例,对于任意一种情况必定可以看成奇数个a面加上偶数个b面组成,由于11111必须要偶数次操作,所以所有情况都得偶数次操作,所以k为偶数,只能使所有的b面最终翻转为a面。所以对于最坏情况:10000的情况就只能进行4次操作,所以奇数k必定n-1。其实对于11111的情况k可以等于5,即所有1变为0,但是这种解已经大于刚才我们求出的n-1了,不是最优解,可以舍弃。

    View Code
    #include <cstdio>
    #include
    <iostream>
    #include
    <cstdlib>
    #include
    <cstring>
    usingnamespace std;

    int main()
    {
    //freopen("D:\\t.txt", "r", stdin);
    int n;
    while (scanf("%d", &n) != EOF && n !=0)
    {
    if (n %2==0)
    printf(
    "No Solution!\n");
    else
    printf(
    "%d\n", n -1);
    }
    return0;
    }
  • 相关阅读:
    python-- socket介绍
    Vue--element实现删除会员功能
    Vue--element实现编辑会员功能
    git clone速度过慢!
    Codeforces Round #730 (Div. 2) A/B/C/D1 解题思路
    KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) E
    Codeforces Round #719 (Div. 3) 解题报告
    ZJNU 1265
    PTA L3
    Codeforces 1503B/1504D
  • 原文地址:https://www.cnblogs.com/rainydays/p/1959663.html
Copyright © 2020-2023  润新知