日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CONTEST1001 题解

發(fā)布時(shí)間:2025/5/22 编程问答 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CONTEST1001 题解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

PROBLEM A

分析

這個(gè)題屬于非常基礎(chǔ)的輸出問題,一般來說見到這種題可以直接復(fù)制粘貼即可。

講解

?沒有什么詳細(xì)說明的直接復(fù)制粘貼即可。這樣不容易出錯(cuò)。

代碼

?

#include <stdio.h> int main() {printf("**************************\n");printf(" Very Good!\n");printf("**************************\n");return 0; }

?

點(diǎn)評(píng)

???????? 很基礎(chǔ)的一道題,主要是熟悉OJ的使用和OJ的出題格式。

PROBLE B

?

?

?

分析

???????? 這個(gè)題相比第一題直接輸出來說還多了輸入。需要注意的是樣例不代表程序只有10 20 30.而是其中之一是10 20 30.所有我們要調(diào)用scanf來進(jìn)行輸入。

?????? 怎么求三個(gè)數(shù)的最大值,其實(shí)有很多方法。在這里我就先介紹一種比較直觀的數(shù)學(xué)方法了(當(dāng)然應(yīng)該不是最簡單的,只是感覺比較好懂罷了)。

?????? 假設(shè)a,b,c 如果求出a,b的最大值,再求出a,c的最大值,那么不就是求出了a,b,c的最大值?

講解

? ? ? ? ?*下面的方法使用了?運(yùn)算符請(qǐng)大家去翻一下課本如果有什么不清楚的話,不過也是基礎(chǔ)的語法。這樣可以減少代碼量,當(dāng)然再后續(xù)的學(xué)習(xí)中,會(huì)知道更多的函數(shù)來減少這種方法的代碼量,但是這里不再詳細(xì)介紹。

代碼

#include <stdio.h> int main() {int a,b,c;scanf("%d %d %d",&a,&b,&c);int k1=(a>b)?a:b;int k2=(a>c)?a:c;int k3=(k1>k2)?k1:k2;printf("%d",k3); }

點(diǎn)評(píng)

???????? 對(duì)于初學(xué)者而言可能不是一道輕松的題,但是掌握了這道題的話,說明你已經(jīng)基本掌握了if的使用方法。

PROBLE C

?

?

?

分析

?????? 這個(gè)題說實(shí)話開始有點(diǎn)技術(shù)含量了,不是直接就能上手去做的。這里用到了循環(huán)語句,我在此用的是for,因?yàn)閒or對(duì)于計(jì)步循環(huán)來說還是比較好用的。這個(gè)題的難點(diǎn)在于怎么去求解2+22+222+…+22…222(n個(gè)2)的值的問題。

講解

???????? 首先看到這種不斷循環(huán)相加的情況,首先想到要用循環(huán)語句。對(duì)于上式的求解,其實(shí)經(jīng)過觀察我們可以發(fā)現(xiàn)一種方法。他們都是2*1,2*11,2*111的,那么怎么去實(shí)現(xiàn)這種功能呢,我們需要定義兩個(gè)變量r,sum(當(dāng)然其他的字母也可以,這里只是習(xí)慣上)。每次循環(huán)把r累積乘10再加1即可即r=r*10+1;用sum來進(jìn)行計(jì)數(shù)。即sum+=2*r;到此程序的主要部分講解完畢。

代碼

?????? 注意下面sum初始值=2!!!i1開始循環(huán)!!

#include <stdio.h> int main() {int n,r,sum;scanf("%d",&n);r=1;sum=2;for(int i=1;i<n;i++){r=r*10+1;sum+=2*r; } printf("%d",sum); }

點(diǎn)評(píng)

???????? 這可能是大家第一次做這種與數(shù)學(xué)相關(guān)的題目。其實(shí)我感覺這個(gè)題是告訴大家,編程跟數(shù)學(xué)是密切相關(guān)的。

PROBLE D

?

?

分析

???????? 這個(gè)題雖然只有三個(gè)數(shù),但是也透露出了一絲絲排序算法的影子。但是在這里我就先不準(zhǔn)備講解排序的一些算法(如冒泡排序)了,直接講解硬來的解法。

講解

???????? 首先我們得知道交換變量的方法,其中一個(gè)就是三變量交換法。我們先定義一個(gè)t? t=a;a=b;b=t這樣即可交換a和b,為什么要定義一個(gè)t來交換而不是直接交換呢,這些還需要你自己思考。那么有了這個(gè)交換變量的方法,我們就可以實(shí)施我們的方法了。我們進(jìn)行直接硬來的三個(gè)if進(jìn)行交換。例如if(a>b) { int t=a;a=b;b=t} 這樣交換后就是a<=b了,同理還有(a>c) (b>c)兩個(gè),

?

?

出自紫書《算法競賽入門經(jīng)典》

詳細(xì)請(qǐng)看代碼

代碼

?

#include <stdio.h> int main() {int a,b,c;scanf("%d %d %d",&a,&b,&c);if(a>b) {int t=a;a=b;b=t;}if(a>c) {int t=a;a=c;c=t;}if(b>c) {int t=b;b=c;c=t;}printf("%d %d %d",a,b,c);return 0; }

點(diǎn)評(píng)

???????? 這個(gè)題僅僅是三個(gè)數(shù)比大小如果是4個(gè)5個(gè)乃至更多的數(shù)呢?建議大家自己去學(xué)習(xí)一下排序的算法,推薦冒泡排序

PROBLE E

?

?

分析

???????? 這還是一道數(shù)學(xué)題,題目本身不難解法很多。但是這里出現(xiàn)了循環(huán)輸入輸出的問題需要注意。

講解

?????? 循環(huán)輸入輸出的基本做法是用一個(gè)while函數(shù)來實(shí)現(xiàn)。這里不得不提一下scanf函數(shù)的返回值為輸入正確的元素的個(gè)數(shù),到EOF結(jié)束指的是end of file,文件末尾。因?yàn)閛j的判卷是文件輸入文件輸出進(jìn)行數(shù)據(jù)的匹配來進(jìn)行判卷的。oj會(huì)把你的程序的輸出文本與答案比對(duì)如果全部一致那么恭喜你就是accepted,如果是其他會(huì)提示別的情況,再次不詳細(xì)說明,看群里文件的入門指南即可。因?yàn)橐斎肴齻€(gè)值所以需要寫成 while(scanf(“%d %d %d”,&a,&b,&c)==3)

其他的就是判斷三角形的方法,判斷直角三角形的方法,方法很多不再詳細(xì)介紹。

詳細(xì)請(qǐng)看代碼

代碼

?

#include <stdio.h> int main() {int a,b,c;while(scanf("%d %d %d",&a,&b,&c)==3){if(a+b>c&&a+c>b&&b+c>a){if(a*a+b*b==c*c)printf("yes\n");elseprintf("no\n");}elseprintf("not a triangle\n");}return 0; }

如果判斷三角形條件有不熟悉的同學(xué)的話,可以看看代碼里的if語句。

點(diǎn)評(píng)

?????? 這道題的要點(diǎn)我覺得在于循環(huán)輸入和輸出。題目本身而言并不難,只需要多多注意細(xì)節(jié)即可。

?

? ? ? ?

轉(zhuǎn)載于:https://www.cnblogs.com/baccano-acmer/p/9716047.html

總結(jié)

以上是生活随笔為你收集整理的CONTEST1001 题解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。