洛谷 P2192 HXY玩卡片

2021-09-26 10:31:59 字數 1337 閱讀 9456

題目描述

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,表示當前所有可能能構成是...