题目描述
Description
摘自算法导论。。。。。。
找出第k个被3,5,7除的时候,余数为2,3,2的数;
输入描述 Input Description
一个数k。
输出描述 Output Description
求出第k个符合条件的数。
样例输入 Sample Input
1
样例输出 Sample Output
23
这个就是中国剩余定理:参见:http://blog.csdn.net/modiz/article/details/15341683问是第K个的值,即(a+kb)%b=ak.
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
// 找出第k个被3,5,7除的时候,余数为2,3,2的数
int main()
{
long long s=0;
int i;
for (i=1;;i++)
if (15*i % 7==1)
{
s+=15*i*2;
break;
}
for (i=1;;i++)
if (21*i % 5==1)
{
s+=21*i*3;
break;
}
for (i=1;;i++)
if (35*i % 3==1)
{
s+=35*i*2;
break;
}
s=s % (3*5*7);
long long k;
while (~scanf("%lld",&k))
printf("%lld\n",(k-1)*105+s);
return 0;
}