Vijos——T1279 Leave-绿光

2023-11-11 02:20
文章标签 vijos leave t1279 绿光

本文主要是介绍Vijos——T1279 Leave-绿光,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

https://vijos.org/p/1279

背景

期待这一份幸运,和一份冲劲,多么奇妙的际遇……。燕姿在演唱完绿光这首歌后,出给了姿迷一个考题。

北欧有一个传说!
人一生中能看见绿光!
他就一生都可以得到幸福!

描述

燕姿唱完这首歌,天上降落了一道绿光,在地上形成了一个矩形的映射,矩形的长为a,宽为b。燕姿向姿迷出了一个考题,谁能够把这个矩形绿光阵分成若干个正整数的正方形,谁的正方形边长之和最小,他就将得到燕姿的一个合影。姿迷们都很想得到合影,可是怎么分才最小呢?大家都束手无策,现在,这个问题交给你了。

歌迷X:呜呜呜,俺的语文不好,听不懂你在讲什么。

燕姿:别怕,其实这个问题可以简化为……

将边长为正整数a,b的长方形划分成若干边长均为正整数,每个正方形的边均平行于矩形的相应边,试求这些正方形边之和的最小值MIN。

(如果这个长方形可以分成N个正方形,其中每个边长为Ai,那么MIN=A1+A2+^^^+AN
注意,数组A中的元素可能相等)

格式

输入格式

一共10行
每行两个正整数,Ai,Bi

对于30%的数据,Ai,Bi<maxint
对于100%的数据,Ai,Bi<maxlongint;

输出格式

一共10行
每行一个整数,输出MINi

样例1

样例输入1

1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
Copy

样例输出1

1
2
3
4
5
6
7
8
9
10
Copy

限制

每点1s

提示

对于样例,可全分长边长为一的正方形,并且可以证明找不到比其更优的分割方法;
加油吧,为了得到燕姿的合影(#17)

来源

孙燕姿
图片

 

ans先加上min(a,b),原矩形可变成边长为 max(a,b),max(a,b)-min(a,b)的样子

依次进行下去,更相减损,最后的矩形的边长一定是gcd(a,b),且应只加一个

所以ans=a+b-gcd(a,b)

 1 #include <algorithm>
 2 #include <iostream>
 3 
 4 using namespace std;
 5 
 6 #define LL long long
 7 LL gcd_(LL a,LL b)
 8 {
 9     if(a%b==0) return b;
10     return gcd_(b,a%b);
11 }
12 
13 int main()
14 {
15     for(LL a,b,t=10;t--;)
16     {
17         cin>>a>>b;
18         cout<<a+b-gcd_(a,b)<<endl;
19     }
20     return 0;
21 }

 

 1 #define LL long long
 2 #include <algorithm>
 3 #include <cstdio>
 4 
 5 using namespace std;
 6 
 7 LL n,m,ans,cnt;
 8 
 9 int main()
10 {
11     for(int t=10;t--;ans=0)
12     {
13         scanf("%lld%lld",&n,&m);
14         if(n>m) swap(n,m);
15         for(;m&&n;m-=m/n*n)
16         {
17             if(n>m) swap(n,m);
18             ans+=n*(m/n);
19         }
20         printf("%lld\n",ans);
21     }
22     
23     return 0;
24 }
暴力模拟

 

转载于:https://www.cnblogs.com/Shy-key/p/7306972.html

这篇关于Vijos——T1279 Leave-绿光的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/386872

相关文章

vijos P1680距离

https://vijos.org/p/1680#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;char s1[2222],s2[2222];int dp[2222][2222];int min(int a,int b,int c){b=b<c?b:c;re

vijos 1028 最长上升序列。

vijos 1028 换一个角度看问题。这道题其实就是一个上升序列。 如:a,aa,aaa,aaaa.一个另类的上升序列。 然后弱弱的试了是二分查找。很理想。不过却是个错误的思路。 朴素的上升序列求法 代码: #include <iostream>#include <string.h>#include <algorithm>using namespace std;char

vijos 1193 dp

每一行的状态由之前两行决定,dp[i][t][k]表示第i行状态为k,下一行状态为t时的种数,然后dp一遍即可。 代码: #include <iostream>#include <cstring>#include <cstdio>using namespace std;int a[10010];int dp[10010][2][2]; //1下一行还需要一个1,0下一行不需要1in

Vijos:P1001谁拿了最多奖学金

描述 某校的惯例是在每学期的期末考试之后发放奖学金。发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生均可获得; 2) 五四奖学金,每人4000元,期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的学生均可获得; 3) 成绩优秀奖,每人2000元,期末平均成绩高于

vijos 1100(树状dp)

点击打开链接 描述 设一个n个节点的二叉树tree的中序遍历为(l,2,3,…,n),其中数字1,2,3,…,n为节点编号。每个节点都有一个分数(均为正整数),记第i个节点的分数为di,tree及它的每个子树都有一个加分,任一棵子树subtree(也包含tree本身)的加分计算方法如下: subtree的左子树的加分× subtree的右子树的加分+subtree的根的分数 若某个子树

翻译《The Old New Thing》 - Never leave focus on a disabled control

Never leave focus on a disabled control - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20040804-00/?p=38243 Raymond Chen 2004年08月04日         在对话框管理中,一个大忌是禁用焦点所在的控件

Vijos P1848 记数问题【进制】

描述 试计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1 到 11 中,即在 1、2、3、4、5、6、7、8、9、10、11 中,数字 1 出现了 4 次。 格式 输入格式 输入共 1 行,包含 2 个整数 n、x,之间用一个空格隔开。 输出格式 输出共 1 行,包含一个整数,表示 x 出现的次数。 样例1 样例输入1 11 1

Vijos P1849 表达式求值【有限状态自动机】

描述 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值。 格式 输入格式 输入仅有一行,为需要你计算的表达式,表达式中只包含数字、加法运算符“+”和乘法运算符“*”,且没有括号,所有参与运算的数字均为 0 到 2 ^ 31 -1 之间的整数。输入数据保证这一行只有 0~ 9、+、*这 12 种字符。 输出格式 输出只有一行,包含一个整数,表示这个表达式的值。注意:当

Vijos P1756 数字反转【进制】

背景 noip2011 NO.1 描述 给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。 格式 输入格式 输入共1 行,一个整数N。 输出格式 输出共1 行,一个整数,表示反转后的新数。 样例1 样例输入1 123 样例输出1 321 样例2

Vijos P1449 字符串还原【密码】

背景 小K是一位蔚蓝教主的崇拜者(Orz教主er),有一天,他收到了一封匿名信,信告诉了小K由于他表现出色,得到了一次当面Orz教主的机会,但是要当面Orz教主可不那么容易,不是每个人都有资格Orz教主的。所以要破解下面一段密文才可以得到相关的信息,信中有提供加密的规则,但是小K觉得这个问题看似复杂,所以想请你帮忙。 描述 一个长度为n的由小写字母组成的字符串s1 s2 ⋯ sn按如