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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

0和5(51Nod-1433)

發布時間:2025/3/17 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 0和5(51Nod-1433) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

小K手中有n張牌,每張牌上有一個一位數的數,這個字數不是0就是5。小K從這些牌在抽出任意張(不能抽0張),排成一行這樣就組成了一個數。使得這個數盡可能大,而且可以被90整除。

注意:

1.這個數沒有前導0,

2.小K不需要使用所有的牌。

輸入

每個測試數據輸入共2行。
第一行給出一個n,表示n張牌。(1<=n<=1000)
第二行給出n個整數a[0],a[1],a[2],…,a[n-1] (a[i]是0或5 ) 表示牌上的數字。

輸出

共一行,表示由所給牌組成的可以被90整除的最大的數,如果沒有答案則輸出”-1”(沒有引號)

輸入樣例

4
5 0 5 0

輸出樣例

0

思路:

由于只給出 0 和 5,要求組成的數能被 90 整除,那么假設 n 張牌中 5 有 a 張,0 有 b 張,可以發現,只有當 a/9>=0?時,組成的牌才能被整除

故先統計牌中 0 和 5 的個數,然后判斷 a、b 個數之間的關系進行輸出即可

源程序

#include<iostream> #include<cstdio> #include<cstdlib> #include<string> #include<cstring> #include<cmath> #include<ctime> #include<algorithm> #include<utility> #include<stack> #include<queue> #include<vector> #include<set> #include<map> #define EPS 1e-9 #define PI acos(-1.0) #define INF 0x3f3f3f3f #define LL long long const int MOD = 1E9+7; const int N = 10000+5; const int dx[] = {-1,1,0,0}; const int dy[] = {0,0,-1,1}; using namespace std;int a[N]; int main() {LL n;scanf("%lld",&n);int numFive=0,numZero=0;for(int i=1; i<=n; i++) {scanf("%d",&a[i]);if(a[i]==5) numFive++;else numZero++;}if(numFive/9>0&&numZero>0) {for(int i=1; i<=numFive/9; i++) cout<<"555555555";for(int i=1; i<=numZero; i++)cout<<"0";} else if(numZero>0)cout<<"0";elsecout<<"-1";return 0; }

?

總結

以上是生活随笔為你收集整理的0和5(51Nod-1433)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。