首页 > 代码库 > Codeforces Round #279 (Div. 2) d
Codeforces Round #279 (Div. 2) d
/** * @brief Codeforces Round #279 (Div. 2) d * @file d.cpp * @author 面码 * @created 2014/12/09 10:58 * @edited 2014/12/09 10:58 * @type math greedy * @note 自己的AC不了,参考别人的,重点是2和3都是质数,所以可以使用贪心求解。 */ #include <fstream> #include <iostream> #include <cstring> #include <map> #include <utility> using namespace std; #define max(a, b) ((a) > (b) ? (a) : (b)) #define min(a, b) ((a) > (b) ? (b) : (a)) #define abs(a) ((a) > 0 ? (a) : (0 - (a))) #define CLR(vec) memset(vec, 0, sizeof(vec)) #define MAXN 4000 #ifdef DEBUG ifstream in; ofstream out; #define CIN in #define COUT out #else #define CIN cin #define COUT cout #endif typedef long long int ll; ll a, b, c, d; ll ans, a1, b1, c1, d1; ll c12, c13, c22, c23; int main(void){ ios_base::sync_with_stdio(0); #ifdef DEBUG CIN.open("./in", ios::in); COUT.open("./out", ios::out); #endif CIN >> a >> b >> c >> d; ans = 0; a1 = a, b1 = b, c1 = c, d1 = d; c13 = 0; c23 = 0; while(0 == a1%3 && a1) a1 /= 3, c13++; while(0 == b1%3 && b1) b1 /= 3, c13++; while(0 == c1%3 && c1) c1 /= 3, c23++; while(0 == d1%3 && d1) d1 /= 3, c23++; while(c13 > c23 && 0 == a%3 && a) c13--, a = a*2/3, ans++; while(c13 > c23 && 0 == b%3 && b) c13--, b = b*2/3, ans++; while(c13 < c23 && 0 == c%3 && c) c23--, c = c*2/3, ans++; while(c13 < c23 && 0 == d%3 && d) c23--, d = d*2/3, ans++; a1 = a, b1 = b, c1 = c, d1 = d; c12 = 0; c22 = 0; while(0 == a1%2 && a1) a1 /= 2, c12++; while(0 == b1%2 && b1) b1 /= 2, c12++; while(0 == c1%2 && c1) c1 /= 2, c22++; while(0 == d1%2 && d1) d1 /= 2, c22++; while(c12 > c22 && 0 == a%2 && a) c12--, a /= 2, ans++; while(c12 > c22 && 0 == b%2 && b) c12--, b /= 2, ans++; while(c12 < c22 && 0 == c%2 && c) c22--, c /= 2, ans++; while(c12 < c22 && 0 == d%2 && d) c22--, d /= 2, ans++; if(a *b != c*d){ COUT << "-1\n"; return 0; } COUT << ans << "\n"; COUT << a << " " << b << "\n"; COUT << c << " " << d << "\n"; return 0; }
Codeforces Round #279 (Div. 2) d
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。