题目描述

立方体有 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,表示游戏要进行的轮数。

输出格式:

如果答案是整数,则答案共一行包含一个整数;如果答案是分数,则答案共一行包含一个最简分

式(无空格)。

输入输出样例

输入样例#1:

0 0 4 0 0 0
2
输出样例#1:

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 立方体的更多相关文章

  1. 清北学堂模拟赛d4t1 a

    分析:大模拟,没什么好说的.我在考场上犯了一个超级低级的错误:while (scanf("%s",s + 1)),导致了死循环,血的教训啊,以后要记住了. /* 1.没有发生改变, ...

  2. 常州模拟赛d7t3 水管

    分析:第一问还是很好做的,关键是怎么做第二问.我们可以每次删掉最小生成树上的一条边,然后再求一次最小生成树,看边权和大小和原来的是不是一样的,不过这个做法效率很低. 考虑Kruskal算法的原理,每次 ...

  3. 常州模拟赛d6t3 噪音

    FJ有M个牛棚,编号1至M,刚开始所有牛棚都是空的.FJ有N头牛,编号1至N,这N头牛按照编号从小到大依次排队走进牛棚,每一天只有一头奶牛走进牛棚.第i头奶牛选择走进第p[i]个牛棚.由于奶牛是群体动 ...

  4. bzoj3743 [Coci2015]Kamp 常州模拟赛d6t2

    3743: [Coci2015]Kamp Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 484  Solved: 229[Submit][Status ...

  5. 常州模拟赛d5t2 mogician

    分析:一个暴力的思想是枚举g,然后枚举每个数ai,看能不能符合要求,这样复杂度是O(nA)的,直接T掉了.也没什么其他的办法了,在暴力的基础上优化一下,优化的关键是要如何快速统计出不满足要求的数的个数 ...

  6. 常州模拟赛d5t1 journalist

    分析:出题人丧心病狂卡spfa......只能用dijkstar+堆优化. 主要的难点是字典序的处理上,一个想法是在做最短路的时候处理,边松弛边记录,比个大小记录最佳答案.具体的思路大概和最短路计数差 ...

  7. 常州模拟赛d4t3 字符串划分

    题目描述 给你一串由小写字母组成的字符串,希望你把它划分成一些小段,使得每一小段字符串中的字母 都不相同,并且希望分的段数尽量少. 然后,把这些小段按字典序排序后输出,中间由一个空格分隔. 例如:字符 ...

  8. 常州模拟赛d4t2 陶陶摘苹果

    题目描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 n 个苹果.苹果成熟的时候,陶陶就会 跑去摘苹果. 陶陶的手不能弯 (他仅能把手伸直),当且仅当陶陶达到的高度与苹果的高度相等的时候,陶陶 ...

  9. 常州模拟赛d3t3 两只怪物心心相印

    题目背景 从前我是一位无名的旅人,旅途中我得到了某样东西:贤者之石.我因此得到悠久的时光和漂泊的生命.1897年冬天,我一时兴起舍弃了旅人的生活. 贤者之石创造出来的,是货真价实的黄金.我的名声传遍了 ...

随机推荐

  1. COGS 930. [河南省队2012] 找第k小的数

    题目描述 看到很短的题目会让人心情愉悦,所以给出一个长度为N的序列A1,A2,A3,...,AN, 现在有M个询问,每个询问都是Ai...Aj中第k小的数等于多少. 输入格式 第一行两个正整数N,M. ...

  2. Android计算器布局

    Android(安桌)计算器布局实现         ——解决整个屏幕方案 引言:     学完了android布局的几种方式,做了一个android计算器. 我在网上搜索了这方面的资料,发现了布局都 ...

  3. JAVASCRIPT闭包以及原型链

    方法内部还有个方法,实例化父方法后,再次调用父方法,可以运行父方法内部的子方法,这样的程序就叫做闭包 DEMO如下: //function outerFn() { // var outerVar = ...

  4. 编程中什么是「Context(上下文)」?

    https://www.zhihu.com/question/26387327 每一段程序都有很多外部变量.只有像Add这种简单的函数才是没有外部变量的.一旦你的一段程序有了外部变量,这段程序就不完整 ...

  5. 【414】Code::Blocks增加主题

    替换文件地址:C:\Users\z5194293\AppData\Roaming\CodeBlocks 文件下载地址:default.rar 通过 Settings -> Editor... - ...

  6. Java形式参数和返回值的问题

    形式参数和返回值的问题 (1).形式参数: A.类名:需要该类的对象. B.抽象类名:需要该类的子类对象. C.接口名:需要该接口的实现类对象. A.类名作为形式参数 class Student { ...

  7. C# 队列Queue

    using System; using System.Collections.Generic; using System.Linq; namespace Queue测试 { class Program ...

  8. javaEE(8)_EL表达式语言

    一.EL表达式简介 EL全名为Expression Language.EL主要作用: 1>获取数据: •EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域中检索java对象. ...

  9. grep-sed命令用法:

    用户切换 su username:非登录式切换 su - username:登录式切换 su -l username:登录式切换 su username -c COMMAND   echo -n   ...

  10. ES6新数据类型map与set

    一.map,简单的键值对映射,具有很快的查找速度 1. 初始化map,map的键名可以使用其他数据类型,对象的属性名只能使用字符串或symbol 使用二维数组 var m = new Map([['n ...