時間限制: 1000 ms 記憶體限制: 524288 kb
原題來自:hackerrank equations
求不定方程: 1x+
1y=1
n!'>1/x + 1/y = 1/n!
的正整數解 (x,y
'>x,
y)的數目。
乙個整數 n
'>n
。乙個整數,表示有多少對 (x,y
'>x,y
) 滿足題意。答案對 109+
7'>109
+7取模。
2
3樣例說明
共有三個數對 (x,y
'>x,y
) 滿足條件,分別是 (3,
6),(
4,4)
'>(3,6),(4,4)
和 (6,3
)'>(6,3
)。對於 30% 的資料,n
≤100
'>n
≤100;
對於全部資料,1≤n
≤106'>1≤n≤106。1
≤n≤10
6'>sol:好一道坑人的普及
題,表示我就是被坑爆的蒟蒻1≤
n≤106
'>隨便拆一下式子可得
原式:1/x + 1/y = 1/n!
--> (x+y) / (x*y) = 1/n!
--> (x+y)*n! = x*y
--> x*n!+y*n! = x*y
--> x*y-x*n! = y*n!
--> x*(y-n!) = y*n!
--> x = (y*n!) / (y-n!)
易知 x>n!, y>n! 令y=n!+t
--> x = (n!+t)*n! / t
--> x = (n!*n!) / t + n!
就是求(n!*n!)的約數個數
然後我就暴力分解質因數,tle。。。tle。。。tle。。。
/*暴力然後發現可以這樣統計個數原式:1/x + 1/y = 1/n!
--> (x+y) / (x*y) = 1/n!
--> (x+y)*n! = x*y
--> x*n!+y*n! = x*y
--> x*y-x*n! = y*n!
--> x*(y-n!) = y*n!
--> x = (y*n!) / (y-n!)
易知 x>n!, y>n! 令y=n!+t
--> x = (n!+t)*n! / t
--> x = (n!*n!) / t + n!
就是求(n!*n!)的約數個數
*/#include
using
namespace
std;
typedef
long
long
ll;inline ll read()
while
(isdigit(ch))
return (f)?(-s):(s);
}#define r(x) x=read()inline
void
write(ll x)
if(x<10
)
write(x/10
); putchar((x%10)+'0'
);
return;}
#define w(x) write(x),putchar(' ')
#define wl(x) write(x),putchar('\n')
const
int mod=1000000007
;const
int n=1000005
;int
n;bool
bo[n];
intprim[n],pos[n];
ll ges[n];
inline
void
get_prime()
for(j=1;j<=*prim&&prim[j]*i<=n;j++)
}}int
main()
}if(oo>1) ges[pos[oo]]++;
}for(i=1;i<=*prim&&prim[i]<=n;i++)
ll ans=1
;
for(i=1;i<=*prim&&prim[i]<=n;i++)
wl(ans);
return0;
}/*input
2output
3input
5output
63input
999998
output
501065738
*/
for(i=1;i<=*prim;i++)為我的智障默哀。。。ges[i]=(ges[i]<<1)%mod;
}
/*view code原式:1/x + 1/y = 1/n!
--> (x+y) / (x*y) = 1/n!
--> (x+y)*n! = x*y
--> x*n!+y*n! = x*y
--> x*y-x*n! = y*n!
--> x*(y-n!) = y*n!
--> x = (y*n!) / (y-n!)
易知 x>n!, y>n! 令y=n!+t
--> x = (n!+t)*n! / t
--> x = (n!*n!) / t + n!
就是求(n!*n!)的約數個數
*/#include
using
namespace
std;
typedef
long
long
ll;inline ll read()
while
(isdigit(ch))
return (f)?(-s):(s);
}#define r(x) x=read()inline
void
write(ll x)
if(x<10
)
write(x/10
); putchar((x%10)+'0'
);
return;}
#define w(x) write(x),putchar(' ')
#define wl(x) write(x),putchar('\n')
const
int mod=1000000007
;const
int n=1000005
;ll n;
bool
bo[n];
intprim[n],pos[n];
ll ges[n];
inline
void
get_prime()
for(j=1;j<=*prim&&prim[j]*i<=n;j++)
}}int
main()
ges[i]=(ges[i]<<1)%mod;
}ll ans=1
;
for(i=1;i<=*prim&&prim[i]<=n;i++)
wl(ans%mod);
return0;
}/*input
2output
3input
5output
63input
999998
output
501065738
*/
佇列(一本通)
這道題重點是關係的轉換和初始化 include include include includeusing namespace std int a 101 記錄接著的的那個節點 int n,m int main int ans void bfs int x,int y int main cout in...
情感修煉一本通
實踐準則 經驗親密關係構成要素 了解 關心 相互依賴性 相互一致性 信任以及承諾 親密的伴侶彼此間有著廣泛而私密的了解。他們熟知彼此的經歷 愛好 情感和心願,而且一般不會把這些資訊透露給其他人。親密的伴侶關心對方,彼此能從對方身上感受到更多的關愛。如果人們認為自己的伴侶了解 理解並欣賞自己,其親密程...
一本通 確定進製
注意一些細節問題就可以了。1 餘數必定小於進製數 2 注意判斷數字範圍 1 p,q,r 1000000 開始以為p q會很大,但是實際 p q 1000000 因為p q r 10000000 所以,本身沒有必要使用高精度,但是如果本題目使用高精度來計算。則需要運用大整數的相關技巧來解決這個問題了。...