本文主要是介绍数学题(分割平面问题)-UVA 10079-Pizza Cutting,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
-
数学题(分割平面问题)-UVA 10079-Pizza Cutting
-
题目链接:10079 - Pizza Cutting
-
思路:
就切蛋糕,问切n次最多能把蛋糕分成几份
直线分割问题,假设现在已经切n-1次,那么第n次的直线与前面直线有n-1个交点,多出平面为:(n-1)+1
可得递推式:
用高中数学数列知识,可得通项公式为:
-
代码:
#include<iostream>
using namespace std;
int main()
{long long N;long long Res;while(cin>>N,N>=0){/*if(N%2) //防止溢出,实际上不会溢出。。Res=2+((N-1)/2)*(N+2);elseRes=2+((N+2)/2)*(N-1);*/Res=2+((N+2)*(N-1))/2;cout<<Res<<endl;}return 0;
}
-
Tip:
看到数据:N (0 ≤ N ≤ 210000000),我觉得不妙可能long long也受不了,所以考虑(n-1)(n+2)相乘可能会溢出,分成奇数偶数进行计算,其实不会溢出。。。
这篇关于数学题(分割平面问题)-UVA 10079-Pizza Cutting的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!