Codeforces 1244 C 模拟思维题
题目链接.
题意:
给你四个数n,p,w,d。找出三个整数x,y,z满足x+y+z=n&&w * x+d * y==p。如果不存在输出-1。(1≤n≤1e12,0≤p≤1e17,1≤d<w≤1e5)
思路:
先尽可能的使x最大,然后把x减去1判断是否存在x,y,z使上述条件成立,成立输出结束,不成立继续把x减去1,直到x,y,z任意一个小于零或者x减去的个数i乘以w的结果i*w是d的倍数(此时w * i为w和d的最小公倍数故x再减不会再找到可能存在的x,y,z,再因w,d的范围为1e5故可证时间复杂度最高为O(1e5))跳出循环。