常州模拟赛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年冬天,我一时兴起舍弃了旅人的生活. 贤者之石创造出来的,是货真价实的黄金.我的名声传遍了 ...
随机推荐
- IOS之UIAlertController
你知道 UIAlertView.UIActionSheet (以及它们各自的 delegate protocols) 在 iOS 8 中已经被废弃了吗? 这是真的.在你的代码中按住 ⌘ 点击 UIAl ...
- Azure资源管理工具Azure PowerShell介绍
什么是 Azure PowerShell? Azure PowerShell 是一组模块,提供用于通过 Windows PowerShell 管理 Azure 的 cmdlet.你可以使用 cmdle ...
- PostgreSQL 的日期函数用法举例
最近偶有开发同事咨询 PostgreSQL 日期函数,对日期处理不太熟悉,今天详细看了下手册的日期函数,整理如下,供参考. 一 取当前日期的函数 --取当前时间skytf=> select no ...
- 单源最短路SPFA
#include<iostream> #include<queue> #include<cstring> #define INF 0x3f3f3f3f using ...
- 机器学习(1)- 概述&线性回归&逻辑回归&正则化
根据Andrew Ng在斯坦福的<机器学习>视频做笔记,已经通过李航<统计学习方法>获得的知识不赘述,仅列出提纲. 1 初识机器学习 1.1 监督学习(x,y) 分类(输出y是 ...
- python基础一 day11 装饰器复习
# 复习# 讲作业# 装饰器的进阶 # functools.wraps # 带参数的装饰器 # 多个装饰器装饰同一个函数# 周末的作业 # 文件操作 # 字符串处理 # 输入输出 # 流程控制 # 装 ...
- windows10 下安装、配置、启动mysql
下载mysql 可以自行去百度 或者 https://dev.mysql.com/downloads/mysql/5.7.html#downloads 解压mysql-5.7.26-winx64.zi ...
- Java中的线程--并发库中的集合
线程中的知识点基本都已经学完了,看看Java5并发库中提供的集合... 一.可堵塞队列 队列包含固定长度的队列和不固定长度的队列 ArrayBlockQueue中只有put()方法和take()方法才 ...
- React初识整理(五)--Redux和Flux(解决状态传递问题)
Flux 1.引入:在React的应⽤中,状态管理是⼀个⾮常重要的⼯作.我们不会直接对DOM节点进⾏操作,⽽是通过将数据设置给state,由state来同步UI,这种⽅式有个潜在的问题,每个组件都有独 ...
- 【dp 贪心】bzoj4391: [Usaco2015 dec]High Card Low Card
巧妙的贪心 Description Bessie the cow is a huge fan of card games, which is quite surprising, given her l ...