武汉工程大学2020GPLT选拔赛(上)
比賽鏈接
A L1-1 I LOVE WIT
模擬,每個字母單獨一行,前面的空格按規律輸出。可以直接輸出,也可以模擬過程
#include<bits/stdc++.h> using namespace std; int main(){string s="I LOVE WIT";for(int i=0;i<s.size();++i){for(int j=1;j<=i;++j){cout<<" ";}cout<<s[i]<<endl;}return 0; }B L1-2 單位換算
根據題目總結公式:
sum=n122.54*10
注意如果不是整數就保留一位小數,否則不留小數
C L1-3 Pokémon
根據題目要求輸出運算
cv對應著相應的概率,再看f等于0或1,乘以對應的概率,直接運算就可以。
注意讀入與輸出時都有百分號,特別處理一下
D L1-4 顛倒陰陽
我們先分析分析有多少步驟
首先當然是將n轉化成2進制形式
然后取反
然后高低位翻轉
最后轉發成十進制
中間兩步我們可以合在一起,因為我們用數組來存二進制,取反后存的時候可以直接倒著存,就相當于翻轉了。
取反時不要講多余部分取反,直接判斷n是否已除盡
詳細看代碼吧
E L1-5 演唱會
題目好理解
我們讀入是將時分秒分別存入hh,mm,ss中,然后分別加上1,22,33,注意進位,從ss開始每滿60進一位,最后比較時分別于演唱會開始與結束時間比較,從小時開始比到秒
(這么做還要進位太麻煩了吧)
其實直接將所有時間都轉化成秒,直接對比多方便
怎么方便怎么做
#include<bits/stdc++.h> using namespace std; int main(){int hh,mm,ss;int sum;char ch;cin>>hh>>ch>>mm>>ch>>ss;sum=hh*3600+mm*60+ss;sum+=3600+22*60+33;int beg=19*3600,ed=21*3600;if(sum<beg){cout<<"arrive on time";}else if(sum<ed){cout<<"arrive late";}else{cout<<"too late";}return 0; }F L1-6 分鴿子
(吃鴿子!!鴿子保護協會表示抗議)
終于有個涉及算法的題了
二分問題
我們要知道正確答案是在區域[l,r]之間的,一開始l=1,r=1e9+2,然后不斷縮小l與r的范圍
我們先枚舉一個mid作為答案,然后判斷mid是否符合條件,如果符合說明可能存在更佳的答案,就把左邊界更新(擴大)
如果不符合說明當前答案太大了,就把右邊界縮小
這個條件怎么判斷呢?
我一開始是先看mid*m與sum(a[i])也就是需要的鴿子肉與有的鴿子肉比較,如果大于已有mid肯定多了
如果小于就看mid是不是比單個鴿子肉小,因為不能混搭
我感覺這樣做問題不大,結果過了一半,懵了
然后換了一個判斷方法,直接看每個鴿子以當前mid標準能分成幾份,如果份數大于人數,即符合要求,反之不符合
具體看代碼吧
總結
以上是生活随笔為你收集整理的武汉工程大学2020GPLT选拔赛(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 理想汽车三季度获得净利润28.1亿元 连
- 下一篇: 牛客网【每日一题】5月8日题目精讲 co