NYOJ 478 月老的難題 (1)解題報告

2021-06-13 22:25:34 字數 1208 閱讀 5044

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:3 描述

月老最近遇到了乙個很棘手的問題,就是「剩男」「剩女」急速增長,而自己這邊又人手不足導致天天都得加班。現在需要你來幫助月老解決這個問題,牽紅繩的規則很簡單:每個男生都乙個編號n(1<=n<=500000),編號n的因數之和就是要牽線的女生的編號。

如20的因子是:1,2,4,5,10;

輸入

輸入資料的第一行是乙個數字t(1<=t<=500000),它表明測試資料的組數.然後是t組測試資料,每組測試資料只有乙個數字n(1<=n<=500000).

輸出對於每組測試資料,請輸出乙個代表輸入編號n男生的另一半的編號.

樣例輸入

3210

12

樣例輸出

1

816

/*

怎麼求乙個數的所有因子只和呢?

找出他所有的因子然後相加?好吧,這麼說只能證明你很聰明^_^

那麼問題的關鍵就轉變為怎麼求出所有的因子

怎麼辦呢?

問題其實很簡單,

如果a*b=c那麼c的因子就一定有a和b,

如果e*f 也等於c,那麼c的因子就一定有e和f

如果h*l 也等於c 、、、、、

、、、 、、、 、、、

那麼,如果想找出c的所有因子只和只需要把a、b、e、f、h、l 等加起來就行了

題目中要求詢問了多次(很多次),我想聰明的你一定想到了用陣列存

恭喜你,你答對了,把他們全部列舉一遍,存起來,問什麼我輸出對應的值就行了

不過,還是有有幾點注意事項的,

比如程式中

① i*i 之後退出

② 當i*i是因子的時候只加乙個i

③ j從 i+1開始 其他情況都加上i+j

*/#include #include #include #include #include #include #include #include #include #define m 500005

using namespace std;

int a[m];

int main()

}while(t--)

return 0;

}

最後,差點忘了說了,a[n]-n是因為n本身不符合題意,雖然是他的因子。

nyoj 47 過河問題

時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述 在漆黑的夜裡,n位旅行者來到了一座狹窄而且沒有護欄的橋邊。如果不借助手電筒的話,大家是無論如何也不敢過橋去的。不幸的是,n個人一共只帶了乙隻手電筒,而橋窄得只夠讓兩個人同時過。如果各自單獨過橋的話,n人所需要的時間已知 而如果兩...

NYOJ 47 過河問題

時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述 在漆黑的夜裡,n位旅行者來到了一座狹窄而且沒有護欄的橋邊。如果不借助手電筒的話,大家是無論如何也不敢過橋去的。不幸的是,n個人一共只帶了乙隻手電筒,而橋窄得只夠讓兩個人同時過。如果各自單獨過橋的話,n人所需要的時間已知 而如果兩...

nyoj 47 過河問題

時間限制 1000 ms 記憶體限制 65535 kb 難度 5 描述 在漆黑的夜裡,n位旅行者來到了一座狹窄而且沒有護欄的橋邊。如果不借助手電筒的話,大家是無論如何也不敢過橋去的。不幸的是,n個人一共只帶了乙隻手電筒,而橋窄得只夠讓兩個人同時過。如果各自單獨過橋的話,n人所需要的時間已知 而如果兩...