常州模拟赛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年冬天,我一时兴起舍弃了旅人的生活. 贤者之石创造出来的,是货真价实的黄金.我的名声传遍了 ...
随机推荐
- COGS 930. [河南省队2012] 找第k小的数
题目描述 看到很短的题目会让人心情愉悦,所以给出一个长度为N的序列A1,A2,A3,...,AN, 现在有M个询问,每个询问都是Ai...Aj中第k小的数等于多少. 输入格式 第一行两个正整数N,M. ...
- Android计算器布局
Android(安桌)计算器布局实现 ——解决整个屏幕方案 引言: 学完了android布局的几种方式,做了一个android计算器. 我在网上搜索了这方面的资料,发现了布局都 ...
- JAVASCRIPT闭包以及原型链
方法内部还有个方法,实例化父方法后,再次调用父方法,可以运行父方法内部的子方法,这样的程序就叫做闭包 DEMO如下: //function outerFn() { // var outerVar = ...
- 编程中什么是「Context(上下文)」?
https://www.zhihu.com/question/26387327 每一段程序都有很多外部变量.只有像Add这种简单的函数才是没有外部变量的.一旦你的一段程序有了外部变量,这段程序就不完整 ...
- 【414】Code::Blocks增加主题
替换文件地址:C:\Users\z5194293\AppData\Roaming\CodeBlocks 文件下载地址:default.rar 通过 Settings -> Editor... - ...
- Java形式参数和返回值的问题
形式参数和返回值的问题 (1).形式参数: A.类名:需要该类的对象. B.抽象类名:需要该类的子类对象. C.接口名:需要该接口的实现类对象. A.类名作为形式参数 class Student { ...
- C# 队列Queue
using System; using System.Collections.Generic; using System.Linq; namespace Queue测试 { class Program ...
- javaEE(8)_EL表达式语言
一.EL表达式简介 EL全名为Expression Language.EL主要作用: 1>获取数据: •EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域中检索java对象. ...
- grep-sed命令用法:
用户切换 su username:非登录式切换 su - username:登录式切换 su -l username:登录式切换 su username -c COMMAND echo -n ...
- ES6新数据类型map与set
一.map,简单的键值对映射,具有很快的查找速度 1. 初始化map,map的键名可以使用其他数据类型,对象的属性名只能使用字符串或symbol 使用二维数组 var m = new Map([['n ...