Timus 1777. Anindilyakwa 奇怪的问题计数
Input
Output
Sample
input | output |
---|---|
11 5 9 |
3 |
Hint
#include <string> #include <vector> #include <map> #include <algorithm> #include <iostream> using namespace std; namespace { bool sLarger(const string s, const string t) { if (s.size() < t.size()) return false; else if (s.size() > t.size()) return true; return s > t; } string operator-(string s, string t) { if (s == t) return "0"; string x; //bool sign = true;不用sign,求其绝对值就可以 if (sLarger(t, s)) { s.swap(t); } bool carry = 0; for (int i = s.size()-1, j = t.size()-1; i>=0 || j>=0 ; i--, j--) { int a = i>=0? s[i] - '0' : 0; int b = j>=0?t[j] - '0' : 0; int sub = a - b - carry; carry = 0; if (sub < 0) { sub += 10; carry = 1; } x.push_back(sub+'0'); } while (x.size() && '0' == x.back()) x.pop_back(); reverse(x.begin(), x.end()); return x; } }//empty namespace end void Anindilyakwa1777() { vector<string> piles(3); cin>>piles[0]>>piles[1]>>piles[2]; sort(piles.begin(), piles.end(), sLarger); int c = 0; while (true) { c++; string minSub = piles[1]-piles[0]; for (int i = 2; i < (int)piles.size(); i++) { string sub = piles[i]-piles[i-1]; if (sLarger(minSub, sub)) minSub = sub; } if ("0" == minSub) break; piles.push_back(minSub); sort(piles.begin(), piles.end(), sLarger); } cout<<c; }
相关文章
- java实现汉诺塔计数
- Java实现第九届蓝桥杯堆的计数
- JVM 基础:回收哪些内存/对象 引用计数算法 可达性分析算法 finalize()方法 HotSpot实现分析
- 计数排序
- LeetCode-1781. 所有子字符串美丽值之和【哈希表,字符串,计数】
- 如何修改Fiori Launchpad里Tile计数调用的时间间隔
- 【t056】智力问答(链表+计数排序做法)
- 204. 计数质数-暴力解法和埃氏筛
- 696. 计数二进制子串
- Leetcode 1711. 大餐计数
- c++ 容器中元素计数
- boost库在工作(9)引用计数的智能指针shared_ptr之二
- 双指针——三角形计数,就是一些细节处理要严谨,否则还是容易出错
- COM编程之四 引用计数
- 203_Spark Core:Scala单词计数
- python计数属性类