題目描述 HXY得到了一些卡片,這些卡片上標有數字0或5。現在她可以選擇其中一些卡片排成一列,使得排出的一列數字組成的數最大,且滿足被90整除這個條件。同時這個數不能含有前導0,即0不能作為這串數的首位。如果不能排出這樣的數,輸出“-1”。 輸入輸出格式 輸入格式: 第一行,卡片的個數n。 第二行, ...
題目描述
HXY得到了一些卡片,這些卡片上標有數字0或5。現在她可以選擇其中一些卡片排成一列,使得排出的一列數字組成的數最大,且滿足被90整除這個條件。同時這個數不能含有前導0,即0不能作為這串數的首位。如果不能排出這樣的數,輸出“-1”。
輸入輸出格式
輸入格式:
第一行,卡片的個數n。
第二行,分別給出了這n個數(只能為數字5或0)。
輸出格式:
僅一行,如果可以排出,則輸出這個數。否則輸出“-1”。
輸入輸出樣例
輸入樣例#1: 複製4 5 0 5 0輸出樣例#1: 複製
0輸入樣例#2: 複製
11 5 5 5 5 5 5 5 5 0 5 5輸出樣例#2: 複製
5555555550
說明
數據範圍:
對於30%的數據,n<=10;
對於20%的數據,僅含數字5;
對於100%的數據,n<=1000。
比較神奇的一道題目
一個數模90等於0,那麼他的各個位數之和為90的倍數
特判一下特殊情況
#include<iostream> #include<cstdio> using namespace std; int main() { int N,P,z=0,f=0; cin>>N; for(int i=1;i<=N;i++) { cin>>P; P==0?z++:f++; } if(z==0){printf("-1");return 0;} if(z>=1&&(f/9==0)) {printf("0");return 0;} for(int i=1;i<=f/9;i++) printf("555555555"); for(int i=1;i<=z;i++) printf("0"); return 0; }