蓝桥杯2015省赛(部分)

四、循环节长度

两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
比如,11/13=6=>0.846153846153… 其循环节为[846153] 共有6位。
下面的方法,可以求出循环节的长度。

请仔细阅读代码,并填写划线部分缺少的代码。

  • Vector 类实现了一个动态数组 Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。

  • boolean add(Object o) 将指定元素添加到此向量的末尾。

  • int indexOf(Object elem) 返回此向量中第一次出现的指定元素的索引,如果此向量不包含该元素,则返回 -1。

  • int size () 返回此向量中的组件数。

import java.util.*;
public class Main
{
    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)  return v.size() - v.indexOf(n); // 填空//__________________;
        }
    }    
    public static void main(String[] args)
    {
        System.out.println(f(1, 8));
        System.out.println(f(8, 3));
        System.out.println(f(11, 13));
        System.out.println(f(39, 190));
    }
}

六、加法变乘法——简单枚举

我们都知道:1+2+3+ … + 49 = 1225
现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015

比如:
1+2+3+…+10* 11+12+…+27*28+29+…+49 = 2015
就是符合要求的答案。

请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。

注意:需要你提交的是一个整数,不要填写任何多余的内容。

public class 加法变乘法 { // 简单枚举
	public static void main(String[] args) {
		for (int i = 1; i <= 46; i++) {
			for (int j = i + 2; j <= 48; j++) {
				if (i * (i + 1) - (i + i + 1) + j * (j + 1) - (j + j + 1) == 2015 - 1225)
					System.out.println(i);
			}
		}
	}
}

七、牌型种数——递归

小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?

请填写该整数,不要填写任何多余的内容或说明文字。

public class 牌型种数 {
	private static int ans;
 
	public static void main(String[] args) {
		f(0, 0);
		System.out.println(ans);
	}
 
	// 13堆牌,每堆4个, 每堆可选0到4个, 只要牌的总数为13即可
	// k: 哪种牌; cnt: 总共分配了几张牌
	private static void f(int k, int cnt) {
		if (k > 13 || cnt > 13)
			return;
		if (k == 13 && cnt == 13) {
			ans++;
			return;
		}
		// cnt 每一种牌出现的次数,cnt逐步上升
		// cnt==13,牌型种数+1,返回
		for (int i = 0; i < 5; i++) {
			f(k + 1, cnt + i);
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值