顺序结构习题-1042纸牌问题题解
原题链接:https://ac.nowcoder.com/acm/contest/18839/1042
来源:牛客网
题目描述
小w想和你van纸牌
小w有两张纸牌,两张纸牌上都有相同的正整数n
每一轮一张纸牌上的数都可以减去小于等于另外一张纸牌上的数的数
每一轮只能操作和上轮不同的纸牌
小w想知道三轮之后两纸牌上数字之和的最小值
注意,不能减为负数
输入描述:
第一行1个正整数n。
输出描述:
一行一个整数 表示三轮之后两纸牌上数字和的最小值
示例1
输入
2
输出
1
说明
样例解释:两张ab上数字分别为2,第一轮,a张减去1(1 <= (b = 2)) 第二轮b减去1(1 <= (a = 1)) ,第三轮a减去1(1 <= (b = 1)),游戏结束a+b = 1,该结果为最可行优解之一
备注:
保证1 ≤ n ≤ 1000000000
思路:
当牌是偶数是每次对半减,是奇数时减去此数的对半减+1,n-(n/2)的式子都满足这二个条件
代码
#include<bits/stdc++.h> using namespace std; int main() { int n; cin >> n; cout << n-(n/2); return 0; } //二解 //int n; //scanf("%d",&n); //int a=n,b=n; //a-=b/2; //b-=b-a; //a-=b; //printf("%d\n",a+b);