Money
来源:互联网 发布:c 开发 gprs源码 编辑:程序博客网 时间:2024/06/09 15:21
时间限制(普通/Java):1000MS/3000MS 运行内存限制:32768KByte
比赛描述
土豪BJ当前身上有现金x元,为了接济他的穷diao基友Tc,他对Tc说你现在可以交换我当前现金的任意两个相邻数字最多k次,多出来的钱都给你,Tc想知道自己最多能得到多少现金。
输入
输入第一行为一个整数T代表数据组数,每组数据只有一行包括两个数字x和k,数字均不含前导零
(1 <= T <= 15, 1 <= x <= 1019, 0 <= k <= 100)
输出
对每组数据,输出一个数字表示Tc能得到的最多现金数。
样例输入
3
1399 3
256 1
109009 4
样例输出
7920
270
801891
题目分析:尽量让高位的数字大,从最高位开始向低位找,先找到k步之内的最大数,如果k步之内的最大数不是当前位置的数,那么把最大数交换到当前为止,然后减去初始值即可。
#include <cstdio> #include <cstring> using namespace std;char s[20]; int k; int main() { int T; scanf("%d", &T); while(T --) { scanf("%s %d", s, &k); long long bj_cash, tc_cash; sscanf(s, "%lld", &bj_cash);//将字符串存储到整形中 int len = strlen(s), now; for(int i = 0; i < len; i++) { now = i; for(int j = i + 1; j <= i + k && j < len; j++) if(s[j] > s[now]) now = j; if(now != i) { for(int j = now; j > i; j--) { swap(s[j], s[j - 1]); k --; } } } sscanf(s, "%lld", &tc_cash); printf("%lld\n", tc_cash - bj_cash); } }
0 0
- Money
- Money
- money
- money
- Money
- money
- money
- Money
- Money
- Money
- 构造 ACdream1408 "Money, Money, Money"
- hdu 1408 acdearm "Money, Money, Money"
- protection money
- Runescape Money
- 关于money
- runescape money
- MySql money
- usaco /money
- Dagger2----一个最简单的Dagger2依赖的实现
- Android屏蔽Home按键
- C#多线程——多线程访问共同的代码或者对象
- 13.2 stdio库的缓冲
- Ubuntu亮度调节问题(转)
- Money
- Android6.0状态栏图标原生反色操作
- hdoj-1421-搬寝室
- BZOJ 1059 矩阵游戏 (二分图最大匹配) (匈牙利算法)
- 设计模式:策略模式(Strategy)
- git diff简介
- cublasSgemm和cublasDgemm的比较
- C#多线程——创建线程
- 多线程