POJ2773---Happy 2006 (tolerance + two)
Last Update:2015-05-28
Source: Internet
Author: User
<span id="Label3"></p><p><p>Description<br>The positive integers is said to being relatively prime to all other if the great Common Divisor (GCD) is 1. For instance, 1, 3, 5, 7, 9...are-relatively Prime to 2006.</p></p><p><p>Now your job is easy:for the given integer m, find the k-th element which was relatively prime to m when these elements ar E Sorted in ascending order.</p></p><p><p>Input<br>The input contains multiple test Cases. For each test case, it contains integers m (1 <= m <= 1000000), K (1 <= k <= 100000000).</p></p><p><p>Output<br>Output the k-th element in a single line.</p></p><p><p>Sample Input</p></p><p><p>2006 1<br>2006 2<br>2006 3</p></p><p><p>Sample Output</p></p><p><p>1<br>3<br>5</p></p><p><p>Source<br>POJ monthly–2006.03.26,static</p></p><p><p>The Two-interval Upper limit, mid, calculates the number of coprime in [1, mid] and n, and the value of the mid is the number of K and N coprime after two Times.</p></p><pre class="prettyprint"><code class=" hljs cpp"><span class="hljs-comment"><span class="hljs-comment">/************************************************************************* > File Name:POJ2773.cpp > Auth Or:alex > Mail: [email protected] > Created time:2015 May 28 Thursday 19:36 15 seconds ******************************** ****************************************/</span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#include <functional></span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#include <algorithm></span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#include <iostream></span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#include <fstream></span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#include <cstring></span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#include <cstdio></span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#include <cmath></span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#include <cstdlib></span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#include <queue></span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#include <stack></span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#include <map></span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#include <bitset></span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#include <set></span></span><span class="hljs-preprocessor"><span class="hljs-preprocessor">#include <vector></span></span><span class="hljs-keyword"><span class="hljs-keyword">using</span></span> <span class="hljs-keyword"><span class="hljs-keyword">namespace</span></span> <span class="hljs-built_in"><span class="hljs-built_in">STD</span></span>;<span class="hljs-keyword"><span class="hljs-keyword">Const</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Double</span></span>PI =<span class="hljs-built_in"><span class="hljs-built_in">ACOs</span></span>(-<span class="hljs-number"><span class="hljs-number">1.0</span></span>);<span class="hljs-keyword"><span class="hljs-keyword">Const</span></span> <span class="hljs-keyword"><span class="hljs-keyword">int</span></span>INF =<span class="hljs-number"><span class="hljs-number">0x3f3f3f3f</span></span>;<span class="hljs-keyword"><span class="hljs-keyword">Const</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Double</span></span>EPS =<span class="hljs-number"><span class="hljs-number">1e-15</span></span>;<span class="hljs-keyword"><span class="hljs-keyword">typedef</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Long</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Long</span></span>LL;<span class="hljs-keyword"><span class="hljs-keyword">typedef</span></span>Pair <<span class="hljs-keyword"><span class="hljs-keyword">int</span></span>,<span class="hljs-keyword"><span class="hljs-keyword">int</span></span>> PLL;<span class="hljs-stl_container"><span class="hljs-stl_container"> <span class="hljs-built_in">vector</span> <<span class="hljs-keyword">int</span>></span></span>Mst LL Calc (ll High) {<span class="hljs-keyword"><span class="hljs-keyword">int</span></span>Size = Mst.size (); LL ans =<span class="hljs-number"><span class="hljs-number">0</span></span>;<span class="hljs-keyword"><span class="hljs-keyword"></span> for</span>(<span class="hljs-keyword"><span class="hljs-keyword">int</span></span>i =<span class="hljs-number"><span class="hljs-number">1</span></span>; I < (<span class="hljs-number"><span class="hljs-number">1</span></span><< size); ++i) {<span class="hljs-keyword"><span class="hljs-keyword">int</span></span>BITS =<span class="hljs-number"><span class="hljs-number">0</span></span>; LL P =<span class="hljs-number"><span class="hljs-number">1</span></span>;<span class="hljs-keyword"><span class="hljs-keyword"></span> for</span>(<span class="hljs-keyword"><span class="hljs-keyword">int</span></span>j =<span class="hljs-number"><span class="hljs-number">0</span></span>; J < size; ++j) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(i & (<span class="hljs-number"><span class="hljs-number">1</span></span><< j)) {++bits; P *= mst[j]; } }<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(bits &<span class="hljs-number"><span class="hljs-number">1</span></span>) {ans + = high/p; }<span class="hljs-keyword"><span class="hljs-keyword">Else</span></span>{ans-= high/p; } }<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>high-ans;}<span class="hljs-keyword"><span class="hljs-keyword">int</span></span>Main () {LL m, k;<span class="hljs-keyword"><span class="hljs-keyword"></span> while</span>(<span class="hljs-built_in"><span class="hljs-built_in">Cin</span></span>>> m >> k) {mst.clear (); LL tmp = m;<span class="hljs-keyword"><span class="hljs-keyword"></span> for</span>(<span class="hljs-keyword"><span class="hljs-keyword">int</span></span>i =<span class="hljs-number"><span class="hljs-number">2</span></span>; I * I <= tmp; ++i) {<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(tmp% i = =<span class="hljs-number"><span class="hljs-number">0</span></span>) {mst.push_back (i);<span class="hljs-keyword"><span class="hljs-keyword"></span> while</span>(tmp% i = =<span class="hljs-number"><span class="hljs-number">0</span></span>) {tmp/= i; } } }<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(tmp ><span class="hljs-number"><span class="hljs-number">1</span></span>) {mst.push_back (tmp); } LL ans =-<span class="hljs-number"><span class="hljs-number">1</span></span>, mid; LL L =<span class="hljs-number"><span class="hljs-number">1</span></span>, R = (<span class="hljs-number"><span class="hljs-number">1L</span></span>L <<<span class="hljs-number"><span class="hljs-number"></span> -</span>);<span class="hljs-keyword"><span class="hljs-keyword"></span> while</span>(l <= R) {mid = (l + R) >><span class="hljs-number"><span class="hljs-number">1</span></span>; LL tmp = Calc (mid);<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>(tmp >= K) {r = mid-<span class="hljs-number"><span class="hljs-number">1</span></span>; Ans = mid; }<span class="hljs-keyword"><span class="hljs-keyword">Else</span></span>{l = mid +<span class="hljs-number"><span class="hljs-number">1</span></span>; } }<span class="hljs-built_in"><span class="hljs-built_in">printf</span></span>(<span class="hljs-string"><span class="hljs-string">"%lld\n"</span></span>, ans); }}</code></pre> <p><p>POJ2773---Happy 2006 (tolerance + two)</p></p></span>