520 钻石争霸赛 题解
說好的鉆石難度,結(jié)果本人菜的一地。。只有88分。。。。
文章目錄
- 7-1 考試周
- 7-2 真的恭喜你
- 7-3 平均成績(jī)
- 7-4 古風(fēng)A+B
- 難度開始上升
- 7-5 猜近似數(shù)字
- 7-6 隨機(jī)輸一次
- 7-7 階乘的非零尾數(shù)
- 7-8 三足鼎立
前四題
十分鐘AC
后兩題二十分鐘自閉
第五題玄學(xué)卡點(diǎn)不知為何
7-1 考試周
模擬即可,按照格式要求輸出
#include<bits/stdc++.h> using namespace std; int main() {double a,b,c;cin>>a>>b;c=a/b;printf("%.0lf/%.1f=%.0f",a,c,b); }7-2 真的恭喜你
if比較輸出
#include<bits/stdc++.h> using namespace std; int main() {int n;cin>>n;if(n>=90)printf("gong xi ni kao le %d fen!",n);else printf("kao le %d fen bie xie qi!",n); }7-3 平均成績(jī)
1和0分別代表男女
男女成績(jī)分別存,各自算出平均值,然后再求總平均值
7-4 古風(fēng)A+B
特判正負(fù),因?yàn)椤?”符號(hào)要特別一行,然后拆成單個(gè)存入數(shù)組,再?gòu)臄?shù)組輸出
#include<bits/stdc++.h> using namespace std;double sum1;double sum2;double ans1;double ans2; int w[100]; int main() {long long a,b,c;cin>>a>>b;c=a+b;int ans=0;if(c<0){cout<<"-"<<endl; c=c*-1;}if(c==0){cout<<"0";return 0;}while(c){w[++ans]=c%10;c/=10;}for(int i=ans;i>=1;i--){cout<<w[i]<<endl; } }難度開始上升
7-5 猜近似數(shù)字
注意兩個(gè)數(shù)如果長(zhǎng)度不一樣直接就算錯(cuò),輸出“No”,
相同情況下,從最高位開始求差的絕對(duì)值,如果該位差的絕對(duì)值大于1,就算錯(cuò),則輸出“No”
如果有一位差的絕對(duì)值是1,則后面再出現(xiàn)絕對(duì)值1的情況,也算輸,
也就是所有位上最多只能有一位的差絕對(duì)值是1,數(shù)量不能多,差的決定值不能大于1
但是這個(gè)題我錯(cuò)了一個(gè)點(diǎn)也不知道為什么?可能哪里我忽視了
我的代碼如下(包含錯(cuò)誤)
正確代碼:(學(xué)校的大佬)
#include<bits/stdc++.h>using namespace std; string a,b; int n; bool boolean(){int l=a.size();bool f=0; for(int i=0;i<l;i++){ if(abs(a[i]-b[i])==0){ continue; } else if(abs(a[i]-b[i])==1&&f==0){ f=1; }else return 0; }return 1; }int main(){ cin>>a; while(1){ cin>>b; if(b=="-1") break; if(b.size()!=a.size()){ printf("No\n"); continue; }if(boolean()) printf("Yes\n"); else printf("No\n"); }return 0; }7-6 隨機(jī)輸一次
尖子石頭步的拼音第一位都不一樣,所以光比第一位就可以
注意k中是每個(gè)多少局輸一次,而非是第多少局輸一次
以下兩題代碼均來自我學(xué)校的大佬學(xué)長(zhǎng)
7-7 階乘的非零尾數(shù)
之前見過一個(gè)求最后一個(gè)非零尾數(shù)
數(shù)論問題,首先考慮末尾產(chǎn)生0的情況,只有當(dāng)相乘的數(shù)的因子中出現(xiàn)2和5時(shí)會(huì)出現(xiàn)0,也就是0的數(shù)量取決于出現(xiàn)多少對(duì)2和5。
2和5都有時(shí)就出現(xiàn)一個(gè)0,所以求min(5,2)
因?yàn)樵陔A乘中5的數(shù)量是少于2的,所以只需要討論因子中有多少個(gè)5就行,對(duì)于求后k位非零數(shù),因?yàn)閷?duì)于一個(gè)整數(shù)的后k位很簡(jiǎn)單,都會(huì)求,所以只需要在計(jì)算階乘的過程中將對(duì)應(yīng)數(shù)量的
2和5除去即可
比如求5!=12345=120的后兩位非零數(shù),就是在計(jì)算時(shí)將2和5去除計(jì)算341,然后mod 100即可
7-8 三足鼎立
之前做過一個(gè)類似的,是求能組成多少個(gè)三角形
暴力,肯定是不對(duì)滴,超時(shí)嘛
因?yàn)槭菢?gòu)成三角形,也就是任何兩邊之差一定小于第三邊
其中一個(gè)邊已經(jīng)給了
我們可以先排序,這樣具備單調(diào)性,
枚舉一個(gè)邊,然后通過二分來確定第三個(gè)邊的范圍,在這范圍內(nèi)的是符合單個(gè)條件,然后反過來操作(確定第三個(gè)邊,然后二分第二個(gè)邊),重復(fù)部分就符合全部要求
所以最后結(jié)果除以二
總結(jié)
以上是生活随笔為你收集整理的520 钻石争霸赛 题解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牛客网【每日一题】5月19日题目精讲 比
- 下一篇: 牛客网 【每日一题】5月20日题目 简单