常州模拟赛d4t1 立方体
題目描述
立方體有 6 個(gè)面,每個(gè)面上有一只奶牛,每只奶牛都有一些干草。為了訓(xùn)練奶牛的合作精神,它
們在玩一個(gè)游戲,每輪:所有奶牛將自己的干草分成 4 等份,分給相鄰的 4 個(gè)面上的奶牛。
游戲開始,給定每個(gè)面上奶牛的干草數(shù)量,k 輪游戲后,請問奶牛 Shary 擁有的干草數(shù)量是多
少? 奶牛在立方體上編號次序是:前、后、上、下、左、右,奶牛 Shary 在立方體的上面。
如果答案是整數(shù),直接輸出;答案可能是分?jǐn)?shù),用最簡分式表示,格式為 X/Y。
例如:一開始 6 個(gè)奶牛的干草數(shù)量是:0,0,4,0,0,0。Shary 開始有干草數(shù)量是 4,其他奶
牛沒有。游戲一輪以后,各個(gè)奶牛的干草數(shù)為:1,1,0,0,1,1;二輪以后各個(gè)奶牛的干草數(shù)為:
1/2,1/2,1,1,1/2,1/2。
輸入輸出格式
輸入格式:
?
第一行包含 6 個(gè)整數(shù) A i ,表示 6 只奶牛開始時(shí)擁有的干草數(shù)量。
第二行包含 1 個(gè)整數(shù) k,表示游戲要進(jìn)行的輪數(shù)。
?
輸出格式:
?
如果答案是整數(shù),則答案共一行包含一個(gè)整數(shù);如果答案是分?jǐn)?shù),則答案共一行包含一個(gè)最簡分
式(無空格)。
?
輸入輸出樣例
輸入樣例#1:0 0 4 0 0 0 2 輸出樣例#1:
1
說明
對于 30% 的數(shù)據(jù):保證任意時(shí)刻每只奶牛擁有的干草數(shù)量為整數(shù);
對于 100% 的數(shù)據(jù):0 ≤ A i ≤ 1000,0 ≤ k ≤ 45。
分析:一道大模擬,就是分?jǐn)?shù)加減法,不過要注意每次運(yùn)算完都必須要約分,而且求最小公倍數(shù)要先除后乘,否則會爆long long.
#include <bits/stdc++.h>using namespace std;int k; long long gcd(long long x,long long y) {if (!y)return x;return gcd(y,x % y); }struct node {long long a,b; }e[10];struct node2 {long long a,b; }e2[10];node add(node2 x,node y) {long long temp = gcd(x.b,y.b);long long lcm = x.b / temp * y.b;x.a *= (lcm / x.b);y.a *= (lcm / y.b);node tt;tt.a = x.a + y.a;tt.b = lcm;if (tt.a != 0){long long t = gcd(tt.a,tt.b);tt.a /= t;tt.b /= t;}return tt; }int main() {//前 --- 上下左右 1 3456//后 --- 上下左右 2 3456//上 --- 前后左右 3 1256//下 --- 前后左右 4 1256//左 --- 上下前后 5 1234//右 --- 上下前后 6 1234cin >> e[1].a >> e[2].a >> e[3].a >> e[4].a >> e[5].a >> e[6].a >> k;for (int i = 1; i <= 6; i++)e[i].b = 1;while (k--){for (int i = 1; i <= 6; i++){e2[i].a = e[i].a;e2[i].b = e[i].b;e2[i].b *= 4;e[i].a = 0;e[i].b = 1;//printf("%d %d\n",e2[i].a,e2[i].b);if (e2[i].a != 0){int t = gcd(e2[i].a,e2[i].b);e2[i].a /= t;e2[i].b /= t;}}for (int i = 1; i <= 6; i++){if (i == 1 || i == 2){for (int j = 3; j <= 6; j++){node t = add(e2[i],e[j]);e[j].a = t.a;e[j].b = t.b;}}elseif (i == 3 || i == 4){for (int j = 1; j <= 2; j++){node t = add(e2[i],e[j]);e[j].a = t.a;e[j].b = t.b;}for (int j = 5; j <= 6; j++){node t = add(e2[i],e[j]);e[j].a = t.a;e[j].b = t.b;}}elseif (i == 5 || i == 6){for (int j = 1; j <= 4; j++){node t = add(e2[i],e[j]);e[j].a = t.a;e[j].b = t.b;}}}}if (e[3].a % e[3].b == 0)cout << e[3].a / e[3].b << endl;elsecout << e[3].a << '/' << e[3].b << endl;return 0; }?
轉(zhuǎn)載于:https://www.cnblogs.com/zbtrs/p/7424775.html
總結(jié)
以上是生活随笔為你收集整理的常州模拟赛d4t1 立方体的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 射手座和双鱼座配不配(两个星座适合做夫妻
- 下一篇: 中国移动手机营业厅(《中国》第一季)