pku3210

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

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

对于奇数个硬币,采用逐个尝试,就会发现规律,首先,如果全部相同则一定是翻转偶数次,当只有一个不同时,又要翻转偶数次,如果翻转这个不同的硬币,偶数次后,任然不同,那么只有对剩下的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;

}

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值