第一道:

传送门:NYOJ 45 棋盘覆盖

2^k*2^k=4^k,其实就是大数计算,-1后取3的倍数。问题本源出自《计算机算法设计与分析》的棋盘覆盖问题,原始解法是分治法,递推出公式f(k) = f(k - 1) * 4 + 1,f(1)=1,再化解下就是4^0 + 4^1 + 4^2 + ... + 4^(n-1)。有兴趣可以google原问题,附上一个不错的问题链接:棋盘覆盖

思路用大数加模拟就很简单了

Java版:

import java.math.BigInteger;
import java.util.Scanner;class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int T = in.nextInt();while(T-- >0) {              BigInteger a = new BigInteger("1");int n = in.nextInt();for(int i = 1; i<=n; i++) {a = a.multiply(BigInteger.valueOf(4));}BigInteger ans = a.subtract(BigInteger.valueOf(1)).divide(BigInteger.valueOf(3));System.out.println(ans);}}
}

C/C++:

#include <stdio.h>
#include <string.h>int a[50];
int b[100];void f()
{//大数*2 int i;for(i = 0; i < 50; i++){a[i] *= 2; }for(i = 0; i < 50 ; i++){a[i + 1] += a[i] / 10;a[i] %= 10;}
}void g()
{//大数减一,再除以三 、b[0] - 1; int i;int k = 0, f = 0;for(i = 99; i >= 0; i --){if(b[i] != 0)break;}/*for(int j = 0; j < 100; j++)printf("%d", b[j]);printf("\n");*/for(; i >= 0 ; i--){k = k * 10 + b[i];if(k / 3 || f){printf("%d", k / 3);k %= 3;f = 1;}}if(f == 0)printf("0");printf("\n");
}void f1()
{//大数的平方 int i, j;for(i = 0; i < 50; i++){for(j = 0; j < 50; j++){b[i + j] += a[i] * a[j];}}for(i = 0; i < 100; i++){b[i + 1] += b[i] / 10;b[i] %= 10;}
}int main (void)
{int m;scanf("%d", &m);while(m --){memset(a, 0, sizeof(a));memset(b, 0, sizeof(b));a[0] = 1;int n, i;scanf("%d", &n);for(i = 0; i < n; i++)f();/*for(i = 0; i < 50; i++)printf("%d", a[i]);printf("\n");*/f1();g();}return 0;
} 

网上其他人提出的万进制版本?

 /**   Author:        illuz <iilluzen[at]gmail.com>*   Blog:          http://blog.csdn.net/hcbbt*   File:          45.cpp*   Lauguage:      C/C++*   Create Date:   2013-08-31 19:39:38*   Descripton:    nyoj 45, cheesboard coverage, wan jin zhi */
#include <cstdio>const int MAXN = 100;
int a[MAXN];            // 万进制,每位存4进制int main() {int n, m, c;scanf("%d", &n);while (n--) {scanf("%d", &m);if (m == 1) {printf("1\n");continue;}a[0] = 1;int t = 0;         // 已经用到第几位for (int i = 1; i < m; i++) {c = 0;        // c为进位数for (int j = 0; j <= t; j++) {a[j] = a[j] * 4 + c;c = a[j] / 10000;a[j] %= 10000;}if (c != 0) {t++;a[t] = c;}a[0]++;}// 处理最后的进位,其实就是99999999这种情况,这里可以不用
//      for (int j = 0; j <= t; j++) {
//          c = a[j] / 10000;
//          a[j] %= 10000;
//      }
//      if (c != 0) {
//          t++;
//          a[t] = c;
//      }printf("%d", a[t]);for (int i = t - 1; i >= 0; i--)printf("%04d", a[i]);printf("\n");}return 0;
}

转载于:https://www.cnblogs.com/zhangmingzhao/p/7256694.html

JAVA大数_棋盘覆盖相关推荐

  1. java棋盘覆盖_棋盘覆盖问题实现

    [实例简介] 实现棋盘覆盖问题 [实例截图] [核心代码] public static void chessBoard(int dr, int dc, int tr, int tc, int size ...

  2. python棋盘覆盖问题_棋盘覆盖问题可视化动图——python

    棋盘覆盖问题可视化动图--python 棋盘覆盖问题是一个经典的分治法解决的问题,具体内容可以参照以下博主的解析 为了更好的理解该算法分治的过程 利用了python中的matplotlib库进行了该算 ...

  3. ckeditor java 使用_如何覆盖默认插件并使用它们拥有按钮ckeditor

    我知道这个问题被问到几个地方,但没有人符合我的要求 . 我想使用默认的ckeditors插件到我自己的按钮和图标 . 可以说,我有一些按钮和图标,现在我想让他们控制ckeditor像普通的ckedit ...

  4. java实现棋盘覆盖算法,java 棋盘覆盖算法

    import java.util.Scanner; /** 棋盘覆盖 */ public class Arithmetic { /** 被覆盖后显示的数字,会根据覆盖的顺序有所递增 */ privat ...

  5. python棋盘覆盖_java实现的棋盘覆盖

    课课家和大家分享一些Java实现的棋盘覆盖的思路:应用分治法 分治的技巧在于如何划分棋盘,使划分后的子棋盘的大小相同,并且每个子棋盘均包含一个特殊方格,从而将原问题分解为规模较小的棋盘覆盖问题.k&g ...

  6. 棋盘覆盖 (详细图解)

    一.棋盘覆盖 二.解题步骤 1.在给定的8x8的方格中如何实现题目中要求的效果,因需用L型的骨牌覆盖,因其仅占三个格子无法与8x8形成联系,因此我们可以利用分治算法将其划分为小单元,与L型产生联系进行 ...

  7. java棋盘问题_0x03大数问题(JAVA解决棋盘覆盖,A+B Problem II)

    常见的有棋盘覆盖和A+B问题,这类问题牵扯到的数值都比较大,如果用一般的数值类型,肯定输出不了,所以就要想一个办法,怎么把大数转换一下输出. A+B Problem II 时间限制:3000 ms | ...

  8. 棋盘覆盖(java实现)

    6.2 棋盘覆盖 1.问题描述 在一个2k×2k 个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘.在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给 ...

  9. 棋盘覆盖算法java_棋盘覆盖问题(算法分析)(Java版)

    1.问题描述: 在一个2k×2k个方格组成的棋盘中,若有一个方格与其他方格不同,则称该方格为一特殊方格,且称该棋盘为一个特殊棋盘.显然特殊方格在棋盘上出现的位置有种情形.因而对任何 k≥0,有4k种不 ...

最新文章

  1. 调优 DB2 UDB v8.1 及其数据库的最佳实践-IBM developerWorks
  2. python代码壁纸-70行python代码实现壁纸批量下载
  3. JAVA 子父类的特点
  4. Redis学习第三课:Redis Hash类型及操作
  5. C#使用Xamarin开发可移植移动应用进阶篇(8.打包生成安卓APK并精简大小),附源码
  6. srtvlet filter
  7. 管理者和领导者的区别_如何赢得领导者的尊重
  8. java list移除符合条件的元素_从List中移除指定 List 中包含的其所有元素(可选操作)。...
  9. Mac给Sublime Text 配置Python3开发环境
  10. Python+tkinter根据窗体大小自动缩放并显示图像
  11. UITableViewCell的高亮和选中以及自绘分割线
  12. curl: (7) Failed connect to localhost:9200; Connection refused
  13. Spring IoC — 基于Java类的配置
  14. 树莓派4B之雨滴雨水传感器模块(python3)
  15. 浙江高考计算机专业要选什么课,浙江省新高考7选3选课指南发布 七选三技巧解读...
  16. 什么是TTL?标准USB接口是TTL吗?RS232、RS422、RS485的区别?
  17. Python 实现数据分析中的 帕累托、漏斗、RFM、雷达图
  18. android删除sd卡照片恢复,手机内存清理方法及照片误删恢复方法 手机党必备
  19. 行测-图形推理-7-相异图形类
  20. 【BZOJ3831】[Poi2014]Little Bird 单调队列

热门文章

  1. 搞定JSP第一个Servlet例子并且还是手动编译
  2. Windows上安装scapy
  3. Mathematica干涉图处理
  4. 输入十个学生的成绩,判断及格不及格人数,得到不及格人的学号
  5. 再谈Erlang代码热替换
  6. Matlab拾零(to be continued)
  7. 均值极差图控制上下限_SPC之I-MR控制图
  8. 一阶系统单位阶跃响应的特点_第八讲 系统的时域响应
  9. 【Paper】论文中定义、定理、引理、证明分别的含义
  10. 4.12 总结-深度学习第四课《卷积神经网络》-Stanford吴恩达教授