常州模拟赛d4t1 立方体
题目描述
立方体有 6 个面,每个面上有一只奶牛,每只奶牛都有一些干草。为了训练奶牛的合作精神,它
们在玩一个游戏,每轮:所有奶牛将自己的干草分成 4 等份,分给相邻的 4 个面上的奶牛。
游戏开始,给定每个面上奶牛的干草数量,k 轮游戏后,请问奶牛 Shary 拥有的干草数量是多
少? 奶牛在立方体上编号次序是:前、后、上、下、左、右,奶牛 Shary 在立方体的上面。
如果答案是整数,直接输出;答案可能是分数,用最简分式表示,格式为 X/Y。
例如:一开始 6 个奶牛的干草数量是:0,0,4,0,0,0。Shary 开始有干草数量是 4,其他奶
牛没有。游戏一轮以后,各个奶牛的干草数为:1,1,0,0,1,1;二轮以后各个奶牛的干草数为:
1/2,1/2,1,1,1/2,1/2。
输入输出格式
输入格式:
第一行包含 6 个整数 A i ,表示 6 只奶牛开始时拥有的干草数量。
第二行包含 1 个整数 k,表示游戏要进行的轮数。
输出格式:
如果答案是整数,则答案共一行包含一个整数;如果答案是分数,则答案共一行包含一个最简分
式(无空格)。
输入输出样例
0 0 4 0 0 0
2
1
说明
对于 30% 的数据:保证任意时刻每只奶牛拥有的干草数量为整数;
对于 100% 的数据:0 ≤ A i ≤ 1000,0 ≤ k ≤ 45。
分析:一道大模拟,就是分数加减法,不过要注意每次运算完都必须要约分,而且求最小公倍数要先除后乘,否则会爆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[]; struct node2
{
long long a,b;
}e2[]; 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 != )
{
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 1234
cin >> e[].a >> e[].a >> e[].a >> e[].a >> e[].a >> e[].a >> k;
for (int i = ; i <= ; i++)
e[i].b = ;
while (k--)
{
for (int i = ; i <= ; i++)
{
e2[i].a = e[i].a;
e2[i].b = e[i].b;
e2[i].b *= ;
e[i].a = ;
e[i].b = ;
//printf("%d %d\n",e2[i].a,e2[i].b);
if (e2[i].a != )
{
int t = gcd(e2[i].a,e2[i].b);
e2[i].a /= t;
e2[i].b /= t;
}
}
for (int i = ; i <= ; i++)
{
if (i == || i == )
{
for (int j = ; j <= ; j++)
{
node t = add(e2[i],e[j]);
e[j].a = t.a;
e[j].b = t.b;
}
}
else
if (i == || i == )
{
for (int j = ; j <= ; j++)
{
node t = add(e2[i],e[j]);
e[j].a = t.a;
e[j].b = t.b;
}
for (int j = ; j <= ; j++)
{
node t = add(e2[i],e[j]);
e[j].a = t.a;
e[j].b = t.b;
}
}
else
if (i == || i == )
{
for (int j = ; j <= ; j++)
{
node t = add(e2[i],e[j]);
e[j].a = t.a;
e[j].b = t.b;
}
}
}
}
if (e[].a % e[].b == )
cout << e[].a / e[].b << endl;
else
cout << e[].a << '/' << e[].b << endl; return ;
}
常州模拟赛d4t1 立方体的更多相关文章
- 清北学堂模拟赛d4t1 a
分析:大模拟,没什么好说的.我在考场上犯了一个超级低级的错误:while (scanf("%s",s + 1)),导致了死循环,血的教训啊,以后要记住了. /* 1.没有发生改变, ...
- 常州模拟赛d7t3 水管
分析:第一问还是很好做的,关键是怎么做第二问.我们可以每次删掉最小生成树上的一条边,然后再求一次最小生成树,看边权和大小和原来的是不是一样的,不过这个做法效率很低. 考虑Kruskal算法的原理,每次 ...
- 常州模拟赛d6t3 噪音
FJ有M个牛棚,编号1至M,刚开始所有牛棚都是空的.FJ有N头牛,编号1至N,这N头牛按照编号从小到大依次排队走进牛棚,每一天只有一头奶牛走进牛棚.第i头奶牛选择走进第p[i]个牛棚.由于奶牛是群体动 ...
- bzoj3743 [Coci2015]Kamp 常州模拟赛d6t2
3743: [Coci2015]Kamp Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 484 Solved: 229[Submit][Status ...
- 常州模拟赛d5t2 mogician
分析:一个暴力的思想是枚举g,然后枚举每个数ai,看能不能符合要求,这样复杂度是O(nA)的,直接T掉了.也没什么其他的办法了,在暴力的基础上优化一下,优化的关键是要如何快速统计出不满足要求的数的个数 ...
- 常州模拟赛d5t1 journalist
分析:出题人丧心病狂卡spfa......只能用dijkstar+堆优化. 主要的难点是字典序的处理上,一个想法是在做最短路的时候处理,边松弛边记录,比个大小记录最佳答案.具体的思路大概和最短路计数差 ...
- 常州模拟赛d4t3 字符串划分
题目描述 给你一串由小写字母组成的字符串,希望你把它划分成一些小段,使得每一小段字符串中的字母 都不相同,并且希望分的段数尽量少. 然后,把这些小段按字典序排序后输出,中间由一个空格分隔. 例如:字符 ...
- 常州模拟赛d4t2 陶陶摘苹果
题目描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 n 个苹果.苹果成熟的时候,陶陶就会 跑去摘苹果. 陶陶的手不能弯 (他仅能把手伸直),当且仅当陶陶达到的高度与苹果的高度相等的时候,陶陶 ...
- 常州模拟赛d3t3 两只怪物心心相印
题目背景 从前我是一位无名的旅人,旅途中我得到了某样东西:贤者之石.我因此得到悠久的时光和漂泊的生命.1897年冬天,我一时兴起舍弃了旅人的生活. 贤者之石创造出来的,是货真价实的黄金.我的名声传遍了 ...
随机推荐
- 洛谷 P1204 [USACO1.2]挤牛奶Milking Cows
题目描述 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶.第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒.第二个农民在700秒开始,在 1200秒结束.第三个农民在1500秒开 ...
- codevs 2728 整数帝国问题(水题日常)
时间限制: 1 s 空间限制: 16000 KB 题目等级 : 白银 Silver 题目描述 Description 在很久以前,在遥远的东方,有一个整数帝国,它里面里居住着大量的正整数,了缓解都 ...
- (四)maven之查找jar包坐标,选择jar包版本
① 先访问http://www.mvnrepository.com/ ,这个地址是maven的公共库. ② 以spring core的jar包为例.在页面的最上方的中间,输入spring ...
- 使用python批量建立文件
for i in range(101,110): n = repr(i) + '.txt' file = open('c:\\ip\\' + n, 'w')
- 多源最短路径floyd
#include<iostream> #define INF 105 using namespace std; int main() { ][],mark,x,y,g; while(cin ...
- 虚拟DOM -------- 最易理解的解释
虚拟DOM是最先由Facebook在react里使用的, 虚拟DOM是一个特别棒的概念,我们都知道,在浏览器上进行DOM操作的时候,会特别的消耗性能而且响应.渲染特别慢,但是有了虚拟DOM就不一样了, ...
- QR 分解
将学习到什么 介绍了平面旋转矩阵,Householder 矩阵和 QR 分解以入相关性质. 预备知识 平面旋转与 Householder 矩阵是特殊的酉矩阵,它们在建立某些基本的矩阵分解过程中起着 ...
- python基础面试题整理---从零开始 每天十题(04)
一.Q:如何用Python来进行查询和替换一个文本字符串? A:可以使用sub()方法来进行查询和替换,sub方法的格式为:sub(replacement, string[, count=0]) re ...
- Electric Motor Manufacturer - Motor Protection: 5 Questions, 5 Answers
I. Selection principle of motor protectorThe Electric Motor Manufacturer stated that the reasonab ...
- 洛谷 P1019 单词接龙 (DFS)
题目传送门 当时一看到这题,蒟蒻的我还以为是DP,结果发现标签是搜索-- 这道题的难点在于思路和预处理,真正的搜索实现起来并不难.我们可以用一个贪心的思路,开一个dic数组记录每个单词的最小重复部分, ...