題目描述
hxy得到了一些卡片,這些卡片上標有數字0或5。現在她可以選擇其中一些卡片排成一列,使得排出的一列數字組成的數最大,且滿足被90整除這個條件。同時這個數不能含有前導0,即0不能作為這串數的首位。如果不能排出這樣的數,輸出「-1」。
輸入格式
第一行,卡片的個數n。
第二行,分別給出了這n個數(只能為數字5或0)。
輸出格式
僅一行,如果可以排出,則輸出這個數。否則輸出「-1」。
分析:1.卡片上只有0或者5兩個數
2.hxy可以選擇一些卡片
3.數字最大且能被90整除
4. 根據樣例1,0可以單獨輸出
重點分析第三點,綜合第一點:組成的數字各個位數的和能被9整除,並且最後一位必須是0(否則不能被90整除),用five表示5的個數,zero表示0的個數,我們發現:組成的數字各個位數的和為5×five,為了保證其能被9整除,所以還要考慮這個數是否是9的倍數,而判斷乙個數是不是9的倍數的方法是看數字和是不是9的倍數,所以要看5的個數這裡一直沒想明白,一直想的是把**停地往後挪,菜唧唧。因此可以做一下討論:
zero == 0 時,必須輸出-1。不能被90整除
zero != 0 && five < 9 時,必須輸出0。
zero != 0 && five >= 9 時,輸出的5的個數為a,a為最大的滿足 a <= five,且a為9的整數倍。
最後,為了保證數字最大,則要讓5盡量排在前面,且0必須出現在最後一位
#include
#include
#include
#include
#include
#include
#include
#include
#define pi 3.1415926535
#include
#include
#include
using namespace std;
typedef
long
long ll;
const
int maxn=
3e4+10;
const ll _inf =
-8e18
;const
int n =
1e5+10;
bool cmp
(ll a,ll b)
//從大到小
intmain()
if(b==0)
printf
("-1");
else
}return0;
}
其實不是很難的一道題,但我就是沒做對。。。
哭唧唧
洛谷 P2192 HXY玩卡片
hxy得到了一些卡片,這些卡片上標有數字0或5。現在她可以選擇其中一些卡片排成一列,使得排出的一列數字組成的數最大,且滿足被90整除這個條件。同時這個數不能含有前導0,即0不能作為這串數的首位。如果不能排出這樣的數,輸出 1 輸入格式 第一行,卡片的個數n。第二行,分別給出了這n個數 只能為數字5或...
洛谷 P2193 HXY和序列
題目描述 hxy突發奇想,她想要找到乙個正整數序列,滿足序列中所有的數不超過n,序列長度為p,且除了第乙個數外,所有的數都能被前乙個數整除 即是前乙個數的倍數 很快她找到了乙個這樣的序列。可是她覺得還不夠,想要知道這樣的序列有多少個,可她被驚人的資料範圍嚇怕了。現在她找到了你,請你來幫助她解決這個問...
洛谷P2194HXY燒情侶
傳送門啦 這個題可以說是tarjan強連通分量的裸題,但需要維護每個強連通分量的最小值,所以做法就很明確了。我們先明確幾個陣列的意思 1.首先是tarjan縮點中的幾個陣列 dfn i i點的時間戳 low i 表示這個點以及其子孫節點連的所有點中dfn最小的值 stack,表示當前所有可能能構成是...