HDU5139 Formula 找規律 離線處理)

2021-09-06 20:05:07 字數 1367 閱讀 6597

problem description

f(n)=(∏i=1nin−i+1)%1000000007

you are expected to write a program to calculate f(n) when a certain n is given.

input

multi test cases (about 100000), every case contains an integer n in a single line.

output

for each n,output f(n) in a single line.

sample input 2

100

sample output 2

148277692

官方題解:

找規律

f(1)=1

f(2)=1*1*2=(1)*(1*2)=1!*2!

f(3)=1*1*1*2*2*3=(1)*(1*2)*(1*2*3)=1!*2!*3!

式子可以簡化為 f(n)=∏i=1n(n!)%mod

,直接打表不行,會超記憶體,可以對資料進行離線處理。排好序之後從小到大暴力。clogc+10000000 ,c為case數目。

題目解析:以前根本不知道題目可以這麼做,又學了一樣新東西,離線處理。

#include #include 

#include

#include

#include

#include

#include

#include

const

int mod=1000000007

;using

namespace

std;

intn,tt;

struct

node

q[100010

];int cmp1(const

void *a,const

void *b)

int cmp2(const

void *a,const

void *b)

intmain()

qsort(q,tt,

sizeof(q[0

]),cmp1);

for(int i=0,j=2; i)

q[i].sum=s2;

}qsort(q,tt,

sizeof(q[0

]),cmp2);

for(int i=0; i)

printf(

"%d\n

",q[i].sum);

return0;

}

HDU 找新朋友

題目大概是小於n的數中有多少個與n互素的數。這裡可以用尤拉公式。函式的值 通式 x x 1 1 p1 1 1 p2 1 1 p3 1 1 p4 1 1 pn 其中p1,p2 pn為x的所有質因數,x是不為0的整數。1 1 唯一和1 互質的數 小於等於1 就是1本身 注意 每種質因數只乙個。比如12 ...

hdu 找新朋友

題目 problem description 新年快到了,豬頭幫協會 準備搞乙個聚會,已經知道現有會員n人,把會員從1到n編號,其中會長的號碼是n號,凡是和會長是老朋友的,那麼該會員的號碼肯定和n有大於1的公約數,否則都是新朋友,現在會長想知道究竟有幾個新朋友?請你程式設計序幫會長計算出來。inpu...

hdu 1286 找新朋友

problem description 新年快到了,豬頭幫協會 準備搞乙個聚會,已經知道現有會員n人,把會員從1到n編號,其中會長的號碼是n號,凡是和會長是老朋友的,那麼該會員的號碼肯定和n有大於1的公約數,否則都是新朋友,現在會長想知道究竟有幾個新朋友?請你程式設計序幫會長計算出來。input 第...