coci2011 友好數對 容斥

2022-05-12 20:04:22 字數 765 閱讀 4835

無趣的小x在玩乙個很無趣的數字遊戲。他要在n個數字中找他喜歡友好數對。

他對友好數對的定義是:如果有兩個數中包含某乙個以上相同的數字(單個數字),這兩個數就是友好數對。

比如:123和345 就是友好數對,因為都包含數字3,顯然123和234也是由號數對。而12和34則不是友好數對,因為它們沒有相同的數字。

剛拿到題沒怎麼讀懂,因為我直觀的想法是存一下掃一遍就行了,後來一想,得用容斥;又犯蠢了;

其實這道題的容斥比較基本,看**吧;

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define ll long long

intn;

ll x=0

;int b[1

<<11],c[1

<<11

];void

init()

b[p]++;

}}ll col(ll x)

void

work()

if(sum%2)ans+=col(c[i]);

else ans-=col(c[i]);

}cout

}int

main()

view code

高校俱樂部之友好數(1)

如果兩個正整數組成它們的數字和相同則稱它們互為友好數,給定正整數x,求比它大的最小的友好數。例如x 222,輸出231,因為2 2 2 6 2 3 1。輸入乙個正整數x,由於輸入數字較大,我們用字串作為輸入,字串不包含首 0 0 x 10 1000 我們同樣用字串來表示輸出。分析 面對這道題,首先考...

JZOJ5258 友好數對

題目就是要我們求有多少個 a i,bi 滿足ai xor bi 2x 2y x y 所以我們可以知道 ai xor bi xor 2x xor 2y 0我們就將所以ai xor 2x 放入乙個雜湊表裡面,然後列舉bi xor 2y 在雜湊表裡面找,有多少個與它相同,統計答案。但是這樣會算重,比如 如...

1105 判斷友好數對(函式專題)

輸入兩個正整數m和n,順序輸出m到n之間的所有友好數對。如果兩個整數的所有正因子之和 包括1,不包括自身 等於對方,就稱這對數是友好的。例如 1184和1210是友好數對,因為 1184的因子之和為1 2 4 8 16 32 37 74 148 296 592 1210 1210的因子之和為1 2 ...