爱奇艺编程题:最后一位

题目:https://www.nowcoder.com/practice/fae8632cfc64433989720bc01e09f382?tpId=90&tqId=30806&rp=2&ru=/ta/2018test&qru=/ta/2018test/question-ranking

#include <bits/stdc++.h>

using namespace std;

bool IsOk(uint64_t x,uint64_t sum){

uint64_t tmp = 0;

while(x){

tmp += x;

x /= 10;

}

return tmp == sum;

}

uint64_t func(uint64_t sum){

int digits = 0;

uint64_t tmp = sum;

while(tmp){

++digits;

tmp /= 10;

}

string molecule = "1" + string(digits - 1,'0');

string denominator(digits,'1');

uint64_t ret = (stoull(molecule) * 10  / stoull(denominator)) * sum / 10;

for(uint64_t i = 1;i <= 10;++i){

if(IsOk(ret + i,sum))

return ret + i;

if(IsOk(ret - i,sum))

return ret - i;

}

uint64_t special = 101002030405;

return special;

}

int main()

{

std::ios::sync_with_stdio(false);

std::cin.tie(0);

uint64_t n;

cin >> n;

uint64_t special = 101002030405;

if(func(n) != special)

cout<<func(n)<<endl;

else

cout<<-1<<endl;

return 0;

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容