1 条题解

  • 0
    @ 2025-8-24 21:37:39

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Yusani_huh
    一生怎么着也得为自己努力一把吧 ฏ๎็็็็ฏ้้้้้้้้้้้้้้้้้้้้้

    搬运于2025-08-24 21:37:39,当前版本为作者最后更新于2020-03-15 22:19:05,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    我真的被这题的毒性惊到了。

    不多说了,咱来一个一个问看这道题。

    问题 1

    按照题意直接输出即可。

    cout<<"I love Luogu!"<<endl;
    

    问题 2

    简单的加减法即可解决。

    cout<<2+4<<" "<<10-2-4<<endl;
    

    问题 3

    简单的乘除法即可解决。

    因为整数除法向下取整的特性,我们可以直接用 14/4 完成第一个问。

    int a=14/4;
    cout<<a<<endl;
    cout<<a*4<<endl;
    cout<<14-a*4<<endl;
    

    问题 4

    用浮点除法直接除即可。

    cout<<500.0/3<<endl;
    

    问题 5

    当成一个相遇问题来做,即两列火车从车头相遇时开始计时,然后让车尾相遇的过程,路程则是两列车的车身长度之和。

    cout<<(260+220)/(12+20)<<endl;
    

    问题 6

    这题使用勾股定理,即转化为一个直角三角形的两条直角边分别为 6cm、9cm,求它的斜边长度。

    所以得到斜边 c=62+92c=\sqrt{6^2+9^2}

    double a=6,b=9;
    double c=sqrt(a*a+b*b);
    cout<<c<<endl;
    

    问题 7

    按照题意模拟即可。

    int a=100;
    a+=10;  //存了10元
    cout<<a<<endl;
    a-=20;  //花了20元
    cout<<a<<endl;
    a=0;  //全部取出
    cout<<a<<endl;
    

    问题 8

    rr 为半径,那么圆的周长 C=2πrC=2 \pi r,面积 S=πr2S= \pi r^2,球的体积 V=43πr3V=\frac{4}{3} \pi r^3

    int r=5;
    double pi=3.141593;
    cout<<2*pi*r<<endl;
    cout<<r*r*pi<<endl;
    cout<<4.0/3*pi*r*r*r<<endl;
    

    问题 9

    用倒推法解决,或者直接列方程,列表也行。

    代码用的是倒推法,从剩下一个桃子推出第三天没吃之前有多少个,再推出第二天没吃之前有多少个,以此类推。

    cout<<(((1+1)*2+1)*2+1)*2<<endl;
    

    问题 10

    是个牛吃草问题,或称牛顿问题,但我太蒻忘了这种题型的小学奥数解法,所以干脆列方程。

    设原有 aa 个评测任务,而每分钟增加 xx 个评测任务,那么根据每台评测机每分钟处理的评测任务数量相同,可以得到

    $$\dfrac{a+30x}{30 \times 8}=\dfrac{a+6x}{6 \times 10} $$

    这么一个方程,解之得 x=12ax=\frac{1}{2}a

    那么每台评测机每分钟可以处理 115a\frac{1}{15}a 个评测任务,而现在有 a+10x=6aa+10x=6a 个评测任务,相除得到需要 99 台评测机。

    cout<<9<<endl;
    

    我看到题解区有巨佬的解法特精彩,果然还是我太蒻。

    问题 11

    这是个追及问题,直接公式计算就行。注意用浮点除法。

    cout<<100.0/(8-5)<<endl;
    

    问题 12

    不嫌麻烦的话你可以直接数,我解决这个用的是 ASCII 码。

    由于A是从第一个开始记的,所以要根据情况加 1 或减 1。

    cout<<'M'-'A'+1<<endl;
    cout<<char('A'-1+18)<<endl;
    

    问题 13

    球的体积公式刚才提到了,只要把两个球的体积加起来,再开立方根就行,注意舍去小数部分,即向下取整。

    int r1=4,r2=10;
    double pi=3.141593;
    double v=4.0/3*pi*r1*r1*r1+4.0/3*pi*r2*r2*r2;
    v=pow(v,1.0/3);  //因为C++没有开立方根的函数,求它的三分之一次方可以达到同样的效果。
    printf("%.0lf\n",v);  //%.0lf可直接舍去小数部分
    

    问题 14

    这涉及到了我的知识盲区……

    再一次粗暴地列了方程:

    设课程定价需降低 xx 元,可得到

    (110x)(10+x)=3500(110-x)(10+x)=3500

    这样一个方程。题目说有两个答案的原因在于这是个一元二次方程。直接暴力破解,得到它的两个根:x=40x=40x=60x=60

    因为题目让我们求课程定价的最小值,而我们设的是降低的钱,那自然降得越多越好,答案应该是 11060=50110-60=50 元。

    cout<<50<<endl;
    

    对于答案的输出方式,我们当然不用粗暴的if else句式,而采用switch进行判定。

    还是奉上完整代码,这里就不加注释了。

    #include<bits/stdc++.h>
    using namespace std;
    int n;
    int main(){
    	cin>>n;
    	switch(n){
    		case 1:{
    			cout<<"I love Luogu!"<<endl;
    			break;
    		}
    		case 2:{
    			cout<<2+4<<" "<<10-2-4<<endl;
    			break;
    		}
    		case 3:{
    			int a=14/4;
    			cout<<a<<endl;
    			cout<<a*4<<endl;
    			cout<<14-a*4<<endl;
    			break;
    		}
    		case 4:{
    			cout<<500.0/3<<endl;
    			break;
    		}
    		case 5:{
    			cout<<(260+220)/(12+20)<<endl;
    			break;
    		}
    		case 6:{
    			double a=6,b=9;
    			double c=sqrt(a*a+b*b);
    			cout<<c<<endl;
    			break;
    		}
    		case 7:{
    			int a=100;
    			a+=10;
    			cout<<a<<endl;
    			a-=20;
    			cout<<a<<endl;
    			a=0;
    			cout<<a<<endl;
    			break;
    		}
    		case 8:{
    			int r=5;
    			double pi=3.141593;
    			cout<<2*pi*r<<endl;
    			cout<<r*r*pi<<endl;
    			cout<<4.0/3*pi*r*r*r<<endl;
    			break;
    		}
    		case 9:{
    			cout<<(((1+1)*2+1)*2+1)*2<<endl;
    			break;
    		}
    		case 10:{
    			cout<<9<<endl;
    			break;
    		}
    		case 11:{
    			cout<<100.0/(8-5)<<endl;
    			break;
    		}
    		case 12:{
    			cout<<'M'-'A'+1<<endl;
    			cout<<char('A'-1+18)<<endl;
    			break;
    		}
    		case 13:{
    			int r1=4,r2=10;
    			double pi=3.141593;
    			double v=4.0/3*pi*r1*r1*r1+4.0/3*pi*r2*r2*r2;
    			v=pow(v,1.0/3);
    			printf("%.0lf\n",v);
    			break;
    		}
    		case 14:{
    			cout<<50<<endl;
    			break;
    		}
    	}
    	return 0;
    }
    

    因为完整地敲了其中 12 个问题的程序,所以代码会有点长。你也可以选择提交答案式的输出,那样看起来更清爽些。

    (突然想求个三连是怎么回事)

    • 1

    信息

    ID
    1467
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者