HDU 5710 Digit Sum 數學雜題

2021-07-14 10:54:26 字數 2140 閱讀 3169

題意:定義s(

n)是n

的數字之和,給出一對a,

b(0b<

101)

,求是否存在

n 滿足a×

s(n)

=b×s

(2n)

對於n中的任何乙個數字x,若x為0-4,則因為沒有進製,所以在s(2n)中貢獻為2x;若x為5-9,則由於其超過10,在s(2n)中貢獻為2x-10+1.這裡不用擔心因為進製會使得高位又滿10進製,事實上前一位最多為2*9=18或者是單純的8,不可能出現9.x位數

s(n)

s(2n

)

0~4x

2x5~9lx

2x-9

可見只有5~9的位數使s(

n)與s

(2n)

有了差異,即s(

2n)=

2s(n

)−9l

,代入原式,s(

n)簡記

為s a

×s=b

×(2s

−9l)

則(2b−a)

s=9b

l 1. a=2b,則l=0,s為任意值。可得最小的n=1;

2. a>2b,則l<0,矛盾!則無滿足的n,輸出0;

3. a<2b, s=

9bl2

b−a≤

5l(至少有l個5),即必須滿足b≤

5a,否則無滿足的n,輸出0。

繼續討論上述第三種情況,由於分母為2b-a,l周期性地使得右邊式子可以整除,現在只要求出最小的l,列舉範圍從1到2b-a必定會有滿足的l。

得到一組滿足的(l,s),構造最小的n。首先先要在後l位塞滿5,剩下的(s-5l)開始從個位到高位塞4,直到塞完為止。

問題來了,既然l可以取多個,怎麼保證最小的l使得n最小?

假設l』=l+x,s′

=9b(

l+x)

2b−a

原來的位數(大約)是(除以4的地方應該加個向上取整)9b

l(2b

−a)−

9l4+

l 現在的位數是9b

(l+x

)(2b

−a)−

9(l+

x)4+

(l+x

) 後面減前面,差值是9b

x(2b

−a)−

9x4+

x=5a

−b4(

2b−a

)x又有條件b≤

5a,則這個差值大於等於0.位數大的數肯定比原來大了。所以最小的l可以得到最小的n.

/*--------------------------------------------

* file name: hdu 5710

* author: danliwoo

* mail: [email protected]

* created time: 2016-07-05

17:09:58

--------------------------------------------*/

#include

#include

#include

#include

#include

#include

using namespace std;

#define n 1000

int ans[n], a, b;

void solve()

if(a > 2

*b || 5

*a< b)

int l, s;

for(l = 1;l < 1000;l++)

memset(ans, 0, sizeof(ans));

for(int i = 0;i < l;i++)

ans[i] = 5;

s -= l*5;

int len;

for(int i = 0;;i++) else

}len = max(len, l);

for(int i = len-1;i >= 0;i--)

printf("%d", ans[i]);

printf("\n");

}int main()

}

P5710 深基3 例2 數的性質

題目描述 一些數字可能擁有以下的性質 性質 1 是偶數 性質 2 大於 4 且不大於 12。小a 喜歡這兩個性質同時成立的數字 uim 喜歡這至少符合其中一種性質的數字 八尾勇喜歡剛好有符合其中乙個性質的數字 正妹喜歡不符合這兩個性質的數字。輸入格式 輸入乙個數字 x 0 x 1000 輸出格式 輸...

卡特蘭數 hdu1130 hdu1133

題意 給定一棵n個節點的二叉樹,求這棵樹有多少個二叉樹。資料範圍 n 100 思路 n個節點的二叉樹有多種,多種二叉樹裡面又有子樹。當n到達100時,結果是乙個龐大的數字,所以要用到大數。在卡特蘭數的應用裡面,求二叉樹的個數是乙個典型的應用,還有 合法的入棧出棧序列數 多邊形分成三角形的個數 圓括弧...

hdu 水仙花數

problem description 春天是鮮花的季節,水仙花就是其中最迷人的代表,數學上有個水仙花數,他是這樣定義的 水仙花數 是指乙個三位數,它的各位數字的立方和等於其本身,比如 153 1 3 5 3 3 3。現在要求輸出所有在m和n範圍內的水仙花數。input 輸入資料有多組,每組佔一行,...