#说好刷题##第六届蓝桥杯省赛javaB组#
题目:加法变乘法
问题描述:
我们都知道:1+2+3+ ... + 49 = 1225
现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015
比如:
1+2+3+...+1011+12+...+2728+29+...+49 = 2015
就是符合要求的答案。
请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。
注意:需要你提交的是一个整数,不要填写任何多余的内容。
解题思路:分析:假设a和b为符合条件的未知数,
①1+2+……+a(a+1)+…… +b(b+1)+……+49 = 2015②1+2+……+a+(a+1)+……+b+(b+1)+……+49 = 1225
我们由①-②式可得,
设
num1=a(a+1)+b(b+1), num2=a+(a+1)+b+(b+1),则num1 - num2 == 790
根据这个条件来枚举判断即可。
答案:16 https://t.cn/R7VJCdR
题目:加法变乘法
问题描述:
我们都知道:1+2+3+ ... + 49 = 1225
现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015
比如:
1+2+3+...+1011+12+...+2728+29+...+49 = 2015
就是符合要求的答案。
请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。
注意:需要你提交的是一个整数,不要填写任何多余的内容。
解题思路:分析:假设a和b为符合条件的未知数,
①1+2+……+a(a+1)+…… +b(b+1)+……+49 = 2015②1+2+……+a+(a+1)+……+b+(b+1)+……+49 = 1225
我们由①-②式可得,
设
num1=a(a+1)+b(b+1), num2=a+(a+1)+b+(b+1),则num1 - num2 == 790
根据这个条件来枚举判断即可。
答案:16 https://t.cn/R7VJCdR
#说好刷题#
#第六届蓝桥杯省赛javaB组#❗
题目:循环节长度
问题描述:
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
比如,11/13=6=>0.846153846153..... 其循环节为[846153] 共有6位。
下面的方法,可以求出循环节的长度。
请仔细阅读代码,并填写划线部分缺少的代码。
public static int f(int n, int m)
{
n = n % m;
Vector v = new Vector();
for(;;)
{
v.add(n);
n *= 10;
n = n % m;
if(n==0) return 0;
if(v.indexOf(n)>=0) _________________________________ ; //填空
}
}
解题思路
什么是循环节题目大概已经说了,就是所得的数有一个循环的长度,之后的数等一次循环节开始后,又开始一次循环节,一直循环。因为此道题目是代码填空题,已经大致给出算法思想,拿题目例子示例input:11 13 output:6
我们首先对11%13 mod :11
将11存到v中,此时v只有一个元素
然后11*10 = 110
110%13 = 6
然后拿6在数组v中找是否有相同的元素发现
if (find(v.begin(), v.end(), n) != v.end())
此条件不满足,这条判断语句就是指在数组长度范围内,是否在数组中找到了n,找到了则为真此条件,否则为假。
那么我们求循环节,比如循环节为1234563456那么循环节就是3456,然而我们可以从第二个3开始与已经存在的数组元素判断,如果存在相同元素,那么通过find函数返回该元素下标,比如1234563456第一次3的下标为2,循环节为3456为4,然后我们通过v.size()或者v.end()减掉返回的下标2就是循环节长度
代码如下: https://t.cn/R7VJCdR
#第六届蓝桥杯省赛javaB组#❗
题目:循环节长度
问题描述:
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
比如,11/13=6=>0.846153846153..... 其循环节为[846153] 共有6位。
下面的方法,可以求出循环节的长度。
请仔细阅读代码,并填写划线部分缺少的代码。
public static int f(int n, int m)
{
n = n % m;
Vector v = new Vector();
for(;;)
{
v.add(n);
n *= 10;
n = n % m;
if(n==0) return 0;
if(v.indexOf(n)>=0) _________________________________ ; //填空
}
}
解题思路
什么是循环节题目大概已经说了,就是所得的数有一个循环的长度,之后的数等一次循环节开始后,又开始一次循环节,一直循环。因为此道题目是代码填空题,已经大致给出算法思想,拿题目例子示例input:11 13 output:6
我们首先对11%13 mod :11
将11存到v中,此时v只有一个元素
然后11*10 = 110
110%13 = 6
然后拿6在数组v中找是否有相同的元素发现
if (find(v.begin(), v.end(), n) != v.end())
此条件不满足,这条判断语句就是指在数组长度范围内,是否在数组中找到了n,找到了则为真此条件,否则为假。
那么我们求循环节,比如循环节为1234563456那么循环节就是3456,然而我们可以从第二个3开始与已经存在的数组元素判断,如果存在相同元素,那么通过find函数返回该元素下标,比如1234563456第一次3的下标为2,循环节为3456为4,然后我们通过v.size()或者v.end()减掉返回的下标2就是循环节长度
代码如下: https://t.cn/R7VJCdR
#说好刷题#
#第六届蓝桥杯省赛javaB组# ❗️
题目:三羊献瑞
问题描述:观察下面的加法算式:
祥 瑞 生 辉
+ 三 羊 献 瑞
-------------------
三 羊 生 瑞 气
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
解题思路:一共有8种不同的数字,现用字母表示为a~h,每个字母用0~9中的某个数字去填充,明显,这里有两个字母是不可以为0的,这可以作为优化的一个条件。这里运用回溯算法的思想,一共需要填充8个数字,可以设一个长度为8的整形数组a,设需要输出的为a[0]~a[3]。从a[0]开始依次填充,每次符合条件继续填充下一个。
答案:如下 https://t.cn/R7VJCdR
#第六届蓝桥杯省赛javaB组# ❗️
题目:三羊献瑞
问题描述:观察下面的加法算式:
祥 瑞 生 辉
+ 三 羊 献 瑞
-------------------
三 羊 生 瑞 气
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
解题思路:一共有8种不同的数字,现用字母表示为a~h,每个字母用0~9中的某个数字去填充,明显,这里有两个字母是不可以为0的,这可以作为优化的一个条件。这里运用回溯算法的思想,一共需要填充8个数字,可以设一个长度为8的整形数组a,设需要输出的为a[0]~a[3]。从a[0]开始依次填充,每次符合条件继续填充下一个。
答案:如下 https://t.cn/R7VJCdR
✋热门推荐