0%

北大 acm 3210 Coins 解题报告

Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 4458 Accepted: 2799

Description

Snoopy has three coins. One day he tossed them on a table then and tried to flip some of them so that they had either all heads or all tails facing up. After several attempts, he found that regardless of the initial configuration of the coins, he could always achieve the goal by doing exactly two flippings, under the condition that only one coin could be flipped each time and a coin could be flipped more than once. He also noticed that he could never succeed with less than two flippings.

Snoopy then wondered, if he had n coins, was there a minimum number x such that he could do exactly x flippings to satisfy his requirements?

Input

The input contains multiple test cases. Each test case consists of a single positive integer n (n < 10,000) on a separate line. A zero indicates the end of input and should not be processed.

Output

For each test case output a single line containing your answer without leading or trailing spaces. If the answer does not exist, output “No Solution!”

Sample Input

230

Sample Output

No Solution!2

当初不理解题意,搞不懂,后来看到nr们解释,恍然大悟
就是问确定一个数n,无论哪种情况翻n次都满足正面或反面全部向上,但不能小于2次
所以如果是偶数个硬币的话就要无解xxxo
如果是偶数就是n-1

代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>

using namespace std;

int main()
{
int n;

while(cin>>n&&n)
{
if(n%2==0)
{
cout<<"No Solution!"<<endl; continue;
}
else
cout<<n-1<<endl;
}

return 0;
}
谢谢您的打赏,我的大英雄 ^_^
Thank you for your generosity, my big hero ^_^

更多内容请关注公众号「西小玛」