游游拿到了一个正整数,她每次操作可以选择将加上,但必须满足。游游希望操作结束后恰好等于。游游想知道,最少需要多少次操作,最多需要多少次操作?
区块链毕设网qklbishe.com为您提供问题的解答
游游拿到了一个正整数,她每次操作可以选择将加上,但必须满足。游游希望操作结束后恰好等于。游游想知道,最少需要多少次操作,最多需要多少次操作?
差不多就是个脑筋急转弯,用dp做成麻瓜,超时了。想通了之后很简单,注意用long就可以了
思路:记录l~r之间的距离dis,求出target/l,此时取target/l个l值,距离target可能还有remain,remain如果小于target/l * dis,则操作target/l次必然可以得到b值。不善言辞,证明就跳过了囧,实在不会说,反正就意会吧…
#include <bits/stdc++.h> #include <climits> using namespace std; int main() { int t; cin >> t; while(t--) { long a, b, l, r; scanf("%ld %ld %ld %ld",&a,&b,&l,&r); // cin >> a >> b >> l >> r; long target = b - a; long dis = r - l; long most = target / l; long remain = target - most * l; if(dis * most >= remain) { cout << (target + r - 1) / r << ' ' << most << endl; } else cout << -1 << endl; } } // 64 位输出请用 printf("%lld")
11:16
以上就是关于问题游游拿到了一个正整数,她每次操作可以选择将加上,但必须满足。游游希望操作结束后恰好等于。游游想知道,最少需要多少次操作,最多需要多少次操作?的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训