测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A34898. 硬币

填空题 中等

题目描述

硬币

题目描述:

有N(2≤N≤50)个硬币正面朝上排成一排,每次反转任意3个硬币(正面反转后为反面,反面反转后为正面),请问最少反转几次可以使N个硬币全部反转成反面。

例如:

N=7,最少反转3次可以使7个硬币全部反转成反面。

第一次将第1、2、3的硬币反转为反面朝上;

第二次将第3个硬币反转为正面朝上,将第4、5的硬币为反面朝上;

第三次将第3、6、7的硬币反转为反面朝上。

输入描述:

输入一个正整数N(2≤N≤50),表示硬币的个数

输出描述:

输出一个整数,如果可以将N个正面朝上硬币全部反转成反面,就输出反转的次数,否则输出-1

样例输入:

7

样例输出:

3

测试用例:

输入

6

18

34

40

45

50

输出

4

7

12

14

18

28


参考答案

#include<iostream> using namespace std; int main() { int n, cnt = 0; cin >> n; cnt = n / 3; if (n % 3 > 0 && n < 5) { cnt = -1; } else if (n % 3 == 1 && n > 4) { cnt += 1; } else if (n % 3 == 2 && n > 4) { cnt += 2; } cout << cnt; return 0; }

答案解析

评分标准:

3分:能正确输出第一组数据;

3分:能正确输出第二组数据;

3分:能正确输出第三组数据;

3分:能正确输出第四组数据;

3分:能正确输出第五组数据;

5分:能正确输出第六组数据。

上一题 下一题