题目

大致翻译:帕夏喜欢把严格的正整数送给他的朋友。帕夏关心安全性,因此当他想发送一个整数n时,他用以下方式对它进行加密:他选取三个整数a、b和c,使l≤a、b、c≤r,然后计算加密值m=n⋅a+b−c。
不幸的是,一个对手截获了l、r和m的值。有可能从这些信息中恢复a、b和c的原始值吗?更正式地说,你需要找到a,b和c的任何值
a、 b和c是整数,
l≤a,b,c≤r,
存在一个严格的正整数n,使得n⋅a+b−c=m。
输入
第一行包含唯一的整数t(1≤t≤20)-测试用例数。下面的t行分别描述一个测试用例。
每个测试用例由三个整数l、r和m组成(1≤l≤r≤500000,1≤m≤1010)。这些数字说明问题的答案是存在的。

输出
对于每个测试用例,输出三个整数a、b和c,使得l≤a、b、c≤r,并且存在一个严格正整数n,使得n⋅a+b−c=m。保证至少有一个可能的解,并且如果有多个解,您可以输出任何可能的组合。
例子
输入
2
4 6 13
2 3 1
输出
4 6 5
2 2 3
注意
在第一个例子中,n=3是可能的,然后n⋅4+6−5=13=m。其他可能的解决方案包括:a=4,b=5,c=4(当n=3时);a=5,b=4,c=6(当n=3时);a=6,b=6,c=5(当n=2时);a=6,b=5,c=4(当n=2时)。
在第二个例子中,唯一可能的情况是n=1:在这种情况下n⋅2+2−3=1=m。注意,n=0是不可能的,因为在这种情况下n不是严格的正整数。
思路:在l到r的范围枚举a,(b-c)存在两种情况 1.b-c>=0,则b>=c。此时有两种思路,第一:从l入手,c=l,b=l+m%a,若b<=r则符合题意,成立;第二:从r入手,b=r,c=r-m%a,若c>=l则符合题意,成立;
2.b-c<0,则b<c.同样也有两种思路,第一:从l入手,b=l,c=l+a-m%a,若c<=r则成立;第二:从r入手,b=r-a+m%a,c=r,若b>=l则成立;(重点 因为在高中数学上很少运用余数求值运算所以要好好理解一下,注意思维的转换)
思路一:

#include <bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define eps 1e-6
typedef long long ll;int main(){int t;scanf("%d",&t);while(t--){ll l,r,m,a,b,c;scanf("%lld%lld%lld",&l,&r,&m);for(ll i=l;i<=r;i++){ll p=m%i;if(m>=i&&l+p<=r){a=i,b=l+p,c=l;break;}if((l+i-p)<=r){a=i,b=l,c=l+i-p;break;}}printf("%lld %lld %lld\n",a,b,c);}return 0;
}

思路二:

#include <bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define eps 1e-6
typedef long long ll;int main(){int t;scanf("%d",&t);while(t--){ll l,r,m,a,b,c;scanf("%lld%lld%lld",&l,&r,&m);for(ll i=l;i<=r;i++){ll p=m%i;if(m>=i&&r-p>=l){a=i,b=r,c=r-p;break;}if(r-i+p>=l){a=i,b=r-i+p,c=r;break;}}printf("%lld %lld %lld\n",a,b,c);}return 0;
}

B. Dubious Cyrpto(思维+枚举)相关推荐

  1. Codeforces1379 B. Dubious Cyrpto(枚举)

    题意: 给定l,r,m 要求构造出一组a,b,c,满足: l<=a,b,c<=r,存在一个正整数n,na+b-c=m 数据范围:l,r<=5e5,m<=1e10 解法: 容易想 ...

  2. [codeforces 1379B] Dubious Cyrpto 公式推导

    Codeforces Round #657 (Div. 2)   参与排名人数8684   错过了难得17:00比赛,可惜 [codeforces 1379B]   Dubious Cyrpto  公 ...

  3. Codeforces Round #657 (Div. 2)B. Dubious Cyrpto

    思路 题目要求: na+b−c=mna+b-c=m na+b−c=m 我们可以转换为 na−m=c−bna-m=c-b na−m=c−b 然后c−bc-bc−b是固定不变的,我们去枚举a,在枚举的a的 ...

  4. Codeforces B. Dubious Cyrpto (枚举 / 模拟) (Round #657 Div.2)

    传送门 题意: 已知存在三个数a,b,c满足l <= a,b,c <= r,且m = n * a + b - c.现在告诉你l,r和m的值,需要你找到一组可行的a,b,c. 思路: 枚举a ...

  5. Codeforces Round #657 (Div. 2) B. Dubious Cyrpto(思维,数学)

    题目链接 题意: m=n⋅a+b−c(n为任意正整数),给出m的值a,b,c的范围l,r(l<=a,b,c<=r),求出a,b,c. 思路: 由推倒知0<=|b-c|<=r-l ...

  6. 枚举 ---- D. Zigzags[ Educational Codeforces Round 94 (Rated for Div. 2)]思维枚举优化4重循环

    D. Zigzags 题目大意:就是给你i<j<k<l并且aj=al&&ai=aki<j<k<l并且a_j=a_l \&\& a_i ...

  7. 【牛客 - 289K】这是一个沙雕题III(贪心,思维枚举,技巧trick,计算上下界)

    题干: 因为现在的新生太强了,都学会了"dp",所以就有了这样一个"dp"题,双11时Gugugu有(x,x+1,x+2....y-1,y)元的抵用券无数张,但 ...

  8. CF876 F 思维 枚举

    给你n个数,问有几个区间满足,区间内或操作大于区间内的任意数. 首先可以知道,两数或操作的结果必定不会小于两者间的最大值,也就是说对于一个区间中,不合法的状态只有两值或相等.那么我们可以考虑枚举每个数 ...

  9. codeforces1379B Dubious Cyrpto

    https://codeforces.com/contest/1379/problem/B 可以想到其实就是让n*a=(m-(r-l),m+r-l)中的一个数 然后直接枚举a=l->r 令l2= ...

最新文章

  1. day10-闭包函数、函数装饰器
  2. BZOJ3238: [Ahoi2013]差异
  3. idea创建、运行、打包控制台程序
  4. PHP中预定义的超全局数组
  5. CORDIC算法VHDL设计实现及仿真
  6. android 系统gpu 调试_【资讯】高通公布首批可OTA更新GPU驱动手机:谷歌Pixel 4/三星S10在列...
  7. js实现modbus_nodejs中使用modbus-serial库创建Modbus TCP读取设备的数据
  8. Cheapest Palindrome POJ - 3280(动态规划*)
  9. 深入掌握Linux操作系统,其实也没你想象那么难
  10. 深入理解计算机系统总结
  11. python : 读取csv最快的Datatable的用法
  12. 节约里程法求解CVRP问题
  13. 一款简约好看的html5音乐播放器,一款好看又简洁的HTML5音乐播放器skPlayer
  14. win10录屏_不为人知的win10隐藏功能,一键录屏,你还不知道?
  15. php数据库输出文字怎么竖着的,关于文字竖排的详细介绍
  16. 网络带宽和下载速度的换算方法
  17. 科普类:什么是量子霸权?
  18. linux awk统计文本单词,shell统计文本中单词的出现次数
  19. Excel作图 数据条 并导出为pdf
  20. 关于B85M-V Plus支持AHCI驱动问题

热门文章

  1. 51单片机实现用一个定时器输出可调PWM
  2. LLumar龙膜官宣品牌代言人——虚拟偶像「昤珑」
  3. 顺序查找 折半查找 二叉排序树
  4. linux抓包pppoe,pppoe抓包流程和拨号流程
  5. SpringBoot中使用Easyexcel实现Excel导入导出功能(三)
  6. OpenMAX编程-音视频等组件介绍
  7. 程序员修炼之路(十四)IT外企那点儿事--也说跳槽
  8. can口通信的软件测试,CAN网络一致性测试和UDS测试设备
  9. python画高德地图
  10. 小白之路由浅入深之------day05