题目描述
SYCSYC在每个阶段结束(语言阶段、基础算法、提高算法)后,都会切蛋糕
现在MasMas有一个蛋糕,他希望将蛋糕分成nn份
规定一刀合法的蛋糕切法为符合以下两种条件之一
-
一刀的切痕迹是一条线段,线段两个端点在圆上,且线段经过圆心(切痕为圆的直径)
-
一刀的切痕迹是一条线段,线段一端在圆心另一端在圆上的(切痕为圆的半径)
一些有效和无效的切割如下图所示
请你算出将蛋糕分成相等的nn等分的最少切割次数
输入格式
输入一个整数nn
输出格式
输出一个整数表示最少切割次数
输入样例1
4
输出样例1
2
输入样例2
3
输出样例2
3
思路:
这道题非常的简单,重要的是动笔画一画,得出规律:
-
如果n=1,那么就输出0(完整的,不用切)
-
如果n%2==0,那么就输出n/2(是一个偶数份数,一刀分两份2/n刀可切出n份)
-
如果n%2==1,那么就输出n(是一个奇数份数,按直径切是不可能的,只能沿着半径切,切n份)
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n;
cin>>n;
if(n==1) //如果切一份
cout<<"0"<<endl; //本来就是一份,不用切
if(n%2==0) //如果是偶数份
cout<<n/2<<endl; //切n/2刀
else //如果是奇数份
cout<<n<<endl; //切n刀半径
return 0;
}
总结:
这道题其实非常的简单,就是要思考,找出规律!
题目链接:
登录https://oj.shiyancang.cn/Contest/Problem/3063.html?index=0&cid=5533&type=4