ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

中石油 问题 A: 联通数(数学)

2021-07-22 10:32:45  阅读:252  来源: 互联网

标签:10 石油 880 联通 888 88 num 数学 yu


题目链接

题意:

给出你一个\(n\)和\(k(k>=1,k<=9)\)我们可以减\(kk,kkk,kkkk....\)
问最后能否减成零

思路:

先举个例子说明一下题意:假设n=10750,k=8那么我们 可以减的是\(88,888,888,8888....\)
我们可以看出\(88\)可以认为成最小的单位,因为\(888,8888,88888....\)都可以转化成\(88\)
888 = 88*10+8
8888 = 88*100+88
88888 = 88*100+888
我们可以看出来奇数位的\(kkk\)需要加上一个8才能正常生成.进而我们得到yu=n%kk,yu必须整除k这是我们的第一个条件.
第二个条件:我们光把余下的8整出来了,还需要888来接受,所以\(num=n/kk/10\),num必须是大于yu/k的这样才有接受的对象.为什么要除10那因为不除10,num的个位代表kk,但kk是不需要k的,最小需要k的单位是kkk所以我们需要除以10.

就拿我们上面举的例子: yu=16,num=12,8|16能够整除第一个条件符合.12>16/8二个条件符合.
有人要问了,12个880拿走两个变成两个888,还有10个880那也不符合呀,首先我们看880跟88的关系,是不是可以转化成10个88,88是最小的单位,那么10个880也就转化成100个88,这样不都转化成符合条件的吗?

void solve()
{
    scanf("%lld%lld", &n, &k);
    ll tmp = k;
    k = k * 10 + k;
    ll num = n / k;
    ll sum = n % k;
    num = num / 10;
    if(num * tmp >= sum && sum % tmp == 0) puts("YES");
    else puts("NO");
}

标签:10,石油,880,联通,888,88,num,数学,yu
来源: https://www.cnblogs.com/KingZhang/p/15042915.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有