当前位置: 代码迷 >> 综合 >> 牛客1039、1041、1042、1048
  详细解决方案

牛客1039、1041、1042、1048

热度:81   发布时间:2023-12-04 22:24:34.0

目录

1039

思路分析

AC代码

 1041

思路分析

AC代码

1042

思路分析

AC代码

1048

思路分析

AC代码


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;
}