Codeforces 837E Vasya's Function:數論入門初步
題意:定義F(a,0) = 0,F(a,b) = 1 + F(a,b - GCD(a,b)。給定 x 和 y (<=1e12)求F(x,y)。
題解:a=A*GCD(a,b) b=B*GCD(a,b),那麼b-GCD(a,b) = (B-1)*GCD(a,b),如果此時A和B-1依然互質,那麼GCD不變下一次還是要執行b-GCD(a,b)。那麼GCD什麼時候才會變化呢?就是說找到一個最小的S,使得(B-S)%T=0其中T是a的任意一個因子。變形得到:B%T=S於是我們知道S=min(B%T)。也就是說b剪掉了S次相同的一個GCD之後,ab有了新的GCD。新的GCD等於原來的GCD*T,可以把a、b都/T,同時GCD*T,這樣問題化歸為上述同樣的問題,進行迭代。
Code:
#include <bits/stdc++.h> using namespace std; typedef long long LL; int main() { LL x, y; cin >> x >> y; LL g = __gcd(x, y); x /= g, y /= g; vector<LL> a; for (LL i = 2; i * i <= x; ++ i) { while (x % i == 0) { x /= i; a.push_back(i); } } if (x > 1) a.push_back(x); LL ans = 0; while (y) { LL g = y; for (LL i : a) { g = min(g, y % i); } ans += g; y -= g; vector<LL> b; for (LL i : a) { if (y % i == 0) { y /= i; } else { b.push_back(i); } } a.swap(b); } cout << ans << endl; }
相關推薦
Codeforces 837E Vasya's Function:數論入門初步
題意:定義F(a,0) = 0,F(a,b) = 1 + F(a,b - GCD(a,b)。給定 x 和 y (<=1e12)求F(x,y)。 題解:a=A*GCD(a,b) b=B*GCD(a,b),那麼b-GCD(a,b) = (B-1)*GCD(a,b),如果此
CodeForces - 837E - Vasya's Function | Educational Codeforces Round 26
mes def using pac main code names codeforce ces /* CodeForces - 837E - Vasya‘s Function [ 數論 ] | Educational Codeforces Round 26 題意
Educational Codeforces Round 26-E-Vasya's Function(思維)
題意:見體面,就是求f(x,y)題解:假如我們模擬遞推肯定炸,因為x和y有1e12這麼大,因此我們要看看這裡邊是否存在著無用功,首先因為每次b都會減掉一個gcd(a,b),我們可以將a和b分別寫成x1*
codeforces837E Vasya's Function
設f(x,y),若y=0,則f(x,0)=0,否則f(x,y)=f(x,y-gcd(x,y))。 資料範圍是1<=x,y<=1012所以不能指望暴力(沒錯,3點就會T) 那麼來分析一下。 不妨設x=A·gcd(x,y),y=B·gcd(
CF837E-Vasya's Function
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandar
HOJ 10444 The milliard Vasya's function(簡單揹包)
在不大於1000000000的數裡,各個數位上的數字之和為s的數有多少個。 很容易想到通過揹包來做,但是如果只是簡單按數位遞推,如何排除0112和112這種重複的情況呢? 處理的辦法是不把0作為物品,但位數i不僅僅從i-1遞推,而是從0到i-1都要統計進來。 #includ
Milliard Vasya's Function(Ural_1353)
Vasya is the beginning mathematician. He decided to make an important contribution to the science and to become famous all over the
字首和的處理入門————codeforces 1016c——Vasya And The Mushrooms
題意: Vasya's house is situated in a forest, and there is a mushroom glade near it. The glade consists of two rows, each of which can be di
TimusOJ - 1353. Milliard Vasya's Function(DP)
TimusOJ - 1353. Milliard Vasya’s Function(DP) 題目連結 題目 求1到109 ( [1, 109] )中各位數字之和為S的數有多少個; 解析 這個題目和LeetCode - 518. Coin Change 2非常的相
codeforces 850B Round #432 Div2D & Div1B:數論+計數
題意:給出n(<=5e5)個數字,每個數字在[ 1 , 1e6 ]範圍內,定義bad為:1、序列非空;2、所有數字的GCD=1.現在有兩種操作:1、刪除某個數字,花費是x。2、給某個數字+1,花費為y,一個數字可以被加很多次。請求出讓這個序列變成good(非bad)的
day39-Spring 12-Spring的JDBC模板:快速入門
pri 哪些 困難 ces 5.0 使用 只需要 common commons Spring AOP的關鍵是它的底層的原理和思想,配置和使用並不是十分困難.AOP本身就是一個思想,是面向對象的延伸,不是用來替換面向對象的,而是用來解決面向對象中的一些問題的.在最初的時候提出
Java學習:HTML入門
網頁 重置 自我介紹 回滾 標簽 color 公式 target coord HTML HTML基本標簽 <html> --html開始標簽 <head> -- 文件頭(用戶在瀏覽器的主體是看不到的) </head> <bo
Codeforces 822D My pretty girl Noora(數論)
view using cout prim pretty space actor true 因子 題目大意:一場選美比賽有N個人,可以分成N/x,每組x人。每組的比較次數為x(x-1)/2,f[N]為最後決出冠軍所需的比較次數,可以通過改變x的值使f[N]改變。題目給出t,l
總結:數論 素數
如果 mil rdo return urn 因子 素數 高效 rand 素數判定算法,經典的Rabin Miller測試,通過二次探測的方法,可以將其正確率上升到一個很高的高度。 $O(1)$的快速乘。 在一些卡常數而且爆long long的取余問題中用到快速乘。
JAVA通信系列三:Netty入門總結
hand list code end @override ada 群發消息 -s object 一、Netty學習資料 書籍《Netty In Action中文版》 對於Netty的十一個疑問http://news.cnblogs.com/n/205413/ 深入淺出Net
Codeforces 837D Round Subset - 動態規劃 - 數論
boolean codec clu program har ray cte zeros ets Let‘s call the roundness of the number the number of zeros to which it ends. You have
:phonegap入門學習
evb dem phone ref shm odk aof cli nsh %E5%85%B3%E4%BA%8Ebitmapconfig%E7%9A%84%E4%B8%8D%E8%A7%A3%E5%95%8A ?????????????????? ?????????
(轉)Android開發書籍推薦:從入門到精通系列學習路線書籍介紹
成長 程序員 理論 targe base 官方 app als 自己的 Android開發書籍推薦:從入門到精通系列學習路線書籍介紹 轉自:http://blog.csdn.net/findsafety/article/details/52317506 很多時候我們都會
Codeforces 148D Bag of mice:概率dp 記憶化搜索
include lac font eof i+1 cnblogs href 都沒有 color 題目鏈接:http://codeforces.com/problemset/problem/148/D 題意: 一個袋子中有w只白老鼠,b只黑老鼠。 公主和龍輪流從袋子裏
[Codeforces 841C]Leha and Function
its 得出 數列 原來 struct != using %d span 題目大意:定義函數F(n,k)為[1,2,3,..n]中k個元素的子集中最小元素的數學期望。現在給你兩個長度相等的數列A,B(A中元素嚴格大於B中元素),現在要你重新排列A,使得$\sum\limit