目录
1039
思路分析
我们可以找到一个规律滴!三个面的面积分别为a,b,c。因为是共享长方体,发挥一下你的空间想象力,就会发现任意两个面都会有公用的一条边。我们设这三条边分别为i,j,k。那么就有:
a = i * j |
b = i * k |
c = j * k |
所以,我们可以发现一个很有趣的现象,我就举其中的一个例子吧,我相信聪明的你一定能懂的。
a * b / c = i * j * i * k / j / k = i * i
i = sqrt ( a * b / c)
所以根据这个现象,我们可以很巧妙地求出长方体的三边长,也就可以求出长方体的体积。
AC代码
#include <iostream>
#include <algorithm>
#include <math.h>
using namespace std;
typedef long long ll;
int main () {
ll a , b , c , d , e , f;
cin >> a >> b >> c;
d = sqrt (a * b / c);
e = sqrt (a * c / b);
f = sqrt (b * c / a);
cout << (d + e + f) * 4;
return 0;
}
1041
思路分析
其实,本题也就是一个找规律的问题(这种题就挺有趣的嘛)。
举几组例子就会发现,每次历时一轮直接有了p只小白兔(即,k = 1),就是p + k最大的情况。
AC代码
#include <iostream>
#include <algorithm>
#include <math.h>
using namespace std;
typedef long long ll;
int main () {
ll a;
cin >> a;
cout << a + 1;
return 0;
}
1042
思路分析
题目限制了,操作只能进行三轮。我们也就举几组例子就可以分析出来:
两张纸牌分别为n1,n2(n1 = n2 ,这里为了便于理解所以用了数字区分),第一轮n1 - (n1 / 2) (如果n为奇数,就n1 / 2取下整);第二轮 , n2 - n1 ;第三轮,n1 - n2。最后求出的n1 和 n2 的和就为最小。这样只是说,实在是有点抽象,我们接下来还是举个例子:
n1 | n2 | |
开始 | 5 | 5 |
第一轮 | 5 - (5 / 2 )= 3 | 5 |
第二轮 | 3 | 5 - 3 = 2 |
第三轮 | 3 - 2 = 1 | 2 |
最红 | 1 | 2 |
所以求出的最终结果为,1 + 2 = 3。
再进一步的思考,我们可以发现一个规律,如果纸牌上的数为奇数,那么结果就为,这个奇数除以二加一;如果为偶数,结果就为这个偶数除以二
AC代码
#include <iostream>
#include <algorithm>
#include <math.h>
using namespace std;
typedef long long ll;
int main () {
ll a , b , c;
cin >> a;
if (a % 2 == 0) cout << a / 2;
else cout << a / 2 + 1;
return 0;
}
1048
思路分析
首先呢,番茄炒鸡蛋,至少要有一个番茄或者一个鸡蛋嘛。这些鸡蛋和番茄的质量均为素数,现在要求不能制作出来的最大份番茄炒鸡蛋。也就是说,我们要求的实际上就是,两个素数最大不能组成的数字。
好的,这还是要找规律(最近做找规律的题已经麻了)。
两个素数a,b不能组成的最大数其实就等于(a - 1)* (b - 1) - 1。
AC代码
#include <iostream>
#include <algorithm>
#include <math.h>
using namespace std;
typedef long long ll;
int main () {
ll a , b;
cin >> a >> b;
cout << (a - 1) * (b - 1) - 1;
return 0;
}