hdu 6646 A B C 大數思維

2021-09-26 03:14:06 字數 2561 閱讀 5824

題意:

給你數字 a,b

,c

,a,b,c,

a,b,c,

要你找出隨意的乙個 x,y

,z

x,y,z

x,y,

z 使得 a∗1

0x+b

∗10y

=c∗1

0z

a*10^+b*10^=c*10^

a∗10x+

b∗10

y=c∗

10z 成立。

做法:

我們考慮c這個數的最高位的**,c這個數的最高位有兩種可能的**。第一種是a或者b的最高位直接相加(包括a或b的這一位是0的情況)而來,另外一種是a和b的最高位進行相加通過進製而來。

所以我們可以列舉 a

aa 和 b

bb 兩個數字的最高位在c的最高位次高位是否能滿足條件即可。這裡還用到了乙個優化(如果c的第一位不是1的話,就排除了a和b相加進製的情況)。

賽上的時候因為用了stl的string的各種操作,瘋狂t怎麼樣都t、t到絕望。賽後用了char寫寫就243ms,我哭了…果然我還是太菜了… 附上一堆測試資料供博友自行檢查。

#include

#define rep(i,a,b) for(int i=(int)a;i<=(int)b;i++)

#define ll long long

using

namespace std;

const

int maxn=

100009

;int flag,ctc,len[4]

,x,y,z;

char s[3]

[maxn]

;char a[maxn]

,c[maxn]

;int

deal

(int idc,

int ida,

int st)

if(la>lc)

return0;

if(la==lc)

}int bit=0;

rep(i,

1,la)

else bit=0;

a[i]

=c[i]

-a[i]

+'0';}

int i=0;

for(i=la;i>=

1&&a[i]

=='0'

;i--);

if(i>=1)

return add;

}return0;

}intck(

int idb)

break;}

return post==

0&&posb==0;

}int

main()

len[2]

+=ctc;

z=ctc; flag=0;

int l1,l2;

if(s[2]

[1]==

'1'&&

(l1=

deal(2

,0,2

)))}

if(l1=

deal(2

,0,1

))}if

(s[2][

1]=='1'

&&(l1=

deal(2

,1,2

)))}

if(l1=

deal(2

,1,1

))}if

(flag)

printf

("%d %d %d\n"

,x,y,z)

;else

printf

("-1\n");

}return0;

}/*4023 39 62

40500 643 1048

23 39 62

2 31 51

1 1 1

20 49 5010000

20 49 5100000

2000000 490000000000000000000 51

200 490000000 51

2000000 49000 51

40500 643 1048

6003000000 101003 61040030000

19954009 800760010 10003001

5 6 11

1000000000000000000000 2 3

11111111 11 11111121000

9913293911030092 325365190001 9945830430030192000

99132939110300920000000000 3253651900010000000000 9945830430030192000

3 5 53

102 9080 1010000

*/

hdu2035 人見人愛A B(C語言)

problem description 求a b的最後三位數表示的整數。說明 a b的含義是 a的b次方 input 輸入資料報含多個測試例項,每個例項佔一行,由兩個正整數a和b組成 1 a,b 10000 如果a 0,b 0,則表示輸入資料的結束,不做處理。output 對於每個測試例項,請輸出a...

hdu 大菲波數

大菲波數 problem description fibonacci數列,定義如下 f 1 f 2 1 f n f n 1 f n 2 n 3。計算第n項fibonacci數值。input 輸入第一行為乙個整數n,接下來n行為整數pi 1 pi 1000 output 輸出為n行,每行為對應的f p...

hdu 勝利大逃亡

problem description ignatius被魔王抓走了,有一天魔王出差去了,這可是ignatius逃亡的好機會.魔王住在乙個城堡裡,城堡是乙個a b c的立方體,可以被表示成a個b c的矩陣,剛開始ignatius被關在 0,0,0 的位置,離開城堡的門在 a 1,b 1,c 1 的位...