pku3210

来源:互联网 发布:绿盟数据库审计型号 编辑:程序博客网 时间:2024/06/04 00:52

题目有很大的迷惑性,虽然题意不难,但是会让人感觉做起来不简单,不知从何下手,如果直接搜索判断,直觉告诉你,一定超时,怎么办,从小的数据找规律.

对于偶数个硬币,如果全部相同则一定只能翻转偶数次,当只有一个与其他相反时,则必须翻转奇数次,显然两者矛盾,所以对于偶数个硬币,一定无解.

对于奇数个硬币,采用逐个尝试,就会发现规律,首先,如果全部相同则一定是翻转偶数次,当只有一个不同时,又要翻转偶数次,如果翻转这个不同的硬币,偶数次后,任然不同,那么只有对剩下的n-1个硬币各翻转一次,所有就大胆的推测奇数各硬币时翻转n-1;并且用3,5,7,9进行验证均成立,就赌一下吧,结果AC!

 

Source:

#include<iostream>

using namespace std;

 

int main()

{

    int n;

    while(1)

    {

       cin>>n;

       if(n==0)break;

       if(n%2==0)cout<<"No Solution!"<<endl;

       else cout<<n-1<<endl;

    }

    return 0;

}