您的位置:首页 > 其它

7_13_P题 Hack it!(数学)

2016-09-04 15:40 459 查看

7_13_P题 Hack it!

简单题意

设f(x),是x每一位上的数之和,求一个区间l,r,使∑ri=lf(i) mod n=0, n为输入

思路

很显然f(1018+x)−f(x)=1

所以有∑1018+xi=xf(i)=∑1018i=1f(i)+∑xi=1f(1018+i)−f(i)

整理得∑1018+xi=xf(i)=∑1018i=1f(i)+x

令sum=∑1018i=1f(i)

则有∑1018+xi=xf(i)=sum+x

令x=(n−sum mod n)mod n

则解就是[1+x,1018+x]

代码

Python

n = int(input())
r = 45*18*10**17;
l = n-r%n
r = l +10**18-1
print(l,r)


CPP

#include <iostream>

using namespace std;

typedef long long ll;
const ll maxn = 1e17;
int main (){
ll n;
cin >>n;
ll l = n - 9LL*(5LL*(9LL*(2LL*maxn%n)%n)%n)%n;
ll r = l+1e18-1;
cout << l <<" "<<r <<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: