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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

n个一位数字的数组中选取任意数目的数字,构成的3的最大倍数是多少?

發布時間:2023/12/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 n个一位数字的数组中选取任意数目的数字,构成的3的最大倍数是多少? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

給定一個整數n,和一個包含n個一位數字的數組,可以任意選取部分數字(或者全選),問可以構成的最大的3的倍數是多少呢?

注意:最后的結果可能很大,建議采用字符串的形式進行儲存,如果結果不存在請輸出No Exist

Input
1<=n<=100

輸入數組中的每個元素均屬于[0,9]

Output
輸出最大的3的倍數

注意輸出的字符串不含前導零

Sample Input 1

3
1 5 6
Sample Output 1

651
Sample Input 2

1
1
Sample Output 2

No Exist
思路:我們首先按照由大到小的順序排序,然后看一下所有的數的和對3取余是多少?然后從末尾遍歷,刪除相應的數字。如果最后可以有這樣一個字符串,就說明可以構成;否則就不能構成。
提交網址
代碼如下:

#include<bits/stdc++.h> #define ll long long using namespace std;const int maxx=1e2+10; int a[maxx],b[maxx]; int sum[maxx]; string s[100001]; int n;inline int cmp(int a,int b){return a>b;} inline int cmp1(string a,string b) {if(a.length()!=b.length()) return a.length()>b.length();else return a>b; } inline int cmp2(char a,char b){return a>b;}int main() {scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);string ss="";sort(a+1,a+1+n,cmp);sum[0]=0;for(int i=1;i<=n;i++) sum[i]=(sum[i-1]+a[i]%3)%3;for(int i=1;i<=n;i++) ss+=(char)(a[i]+'0');if(sum[n]==0){if(a[1]==0) cout<<0<<endl;else cout<<ss<<endl;}else if(sum[n]==1){int flag=0;for(int i=n-1;i>=0;i--){if((ss[i]-'0')%3==1){ss.erase(ss.begin()+i);flag=1;break;}}if(!flag){int num=0;for(int i=n-1;i>=0;i--){if((ss[i]-'0')%3==2){ss.erase(ss.begin()+i);num++;if(num==2) {flag=1;break;}}}}if(flag==0||ss.length()==0) cout<<"No Exist"<<endl;else {if(ss[0]=='0') cout<<0<<endl;else cout<<ss<<endl;}}else if(sum[n]==2){int flag=0;for(int i=n-1;i>=0;i--){if((ss[i]-'0')%3==2){ss.erase(ss.begin()+i);flag=1;break;}}if(!flag){int num=0;for(int i=n-1;i>=0;i--){if((ss[i]-'0')%3==1){ss.erase(ss.begin()+i);num++;if(num==2) {flag=1;break;}}}}if(flag==0||ss.length()==0) cout<<"No Exist"<<endl;else {if(ss[0]=='0') cout<<0<<endl;else cout<<ss<<endl;}}return 0; }

努力加油a啊,(o)/~

總結

以上是生活随笔為你收集整理的n个一位数字的数组中选取任意数目的数字,构成的3的最大倍数是多少?的全部內容,希望文章能夠幫你解決所遇到的問題。

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