标签:
摘自算法导论。。。。。。
找出第k个被3,5,7除的时候,余数为2,3,2的数;
一个数k。
求出第k个符合条件的数。
1
23
k>=1;
答案不超过long long所能存储的范围。
典型的数论题。
讲讲公式的推导。
首先看除以3 除以7都是余2 那么满足这一条件的第n个数为: 21*n+2 (n>=0)
再看看满足除以5余三的条件:末位为3或8
结合这两者,那么只需要21*n的末位为1或6即可满足条件
又因为21的末尾为1所以n的末尾也为1或6.
所以第k个n可以表示为:n=5k-4 (k>=0)
所以 ans=(k*5-4)*21+2
AC代码:
#include<iostream> using namespace std; int main(){ ios::sync_with_stdio(0); long long int k,ans; cin>>k; ans=(k*5-4)*21+2; cout<<ans<<endl; return 0; }
3040 中国余数定理 1[一中数论随堂练]
原文地址:http://www.cnblogs.com/shenben/p/5658445.html