蓝桥杯---棋盘放麦子.猜生日

简介: 蓝桥杯---棋盘放麦子.猜生日

1.棋盘放麦子


你一定听说过这个故事。国王对发明国际象棋的大臣很佩服,问他要什么报酬,大臣说:请在第 11 个棋盘格放 11 粒麦子,在第 22 个棋盘格放 22 粒麦子,在第 33 个棋盘格放 44 粒麦子,在第 44 个棋盘格放 88 粒麦子,…后一格的数字是前一格的两倍,直到放完所有棋盘格(国际象棋共有 6464 格)。


国王以为他只是想要一袋麦子而已,哈哈大笑。


当时的条件下无法准确计算,但估算结果令人吃惊:即使全世界都铺满麦子也不够用!


请你借助计算机准确地计算,到底需要多少粒麦子。


#include<bits/stdc++.h>
using namespace std;
unsigned long long total,count1 = 1;
int main()
{
  total += count1;
  for(int i = 1; i<=63; i++){// 1 : 2的1次方  2 : 2的2次方 2^0+2^1+...+2^63
    count1 *= 2;  // i = 1, count1:2  i = 2 count1: 4
    total += count1;
    //cout<<total<<endl;
  }
  cout<<total<<endl;
  return 0;
}


这个题如果使用double类型存储数据,运算时会出现精度损失的问题.可以使用 long long 类型,还得是无符号的才行,有符号的会越界.


2.猜生日


今年的植树节(2012 年 3 月 12日),小明和他的叔叔还有小伙伴们一起去植树。休息的时候,小明的同学问他叔叔多大年纪,他叔叔说:“我说个题目,看你们谁先猜出来!”


“把我出生的年月日连起来拼成一个 8 位数(月、日不足两位前补 0)正好可以被今天的年、月、日整除!”


他想了想,又补充到:“再给个提示,我是 6 月出生的。”


根据这些信息,请你帮小明算一下,他叔叔的出生年月日。


格式是年月日连成的 88 位数。例如,如果是 1948 年 6月 12 日,就写:19480612


#include<bits/stdc++.h>
#include<sstream>
using namespace std;
int main()
{
  bool flag = false;
  int date;
  stringstream s;
  string day,year;
  string str;
  for(int i = 1900; ; i++){
    s.clear();
    s<<i;
    s>>year;
    s.clear(); 
    for(int j = 1; j <= 30; j++){
      str="";
      day = "";
      s<<j;
      s>>day;
      str = j <= 9 ? (year+ "060"+day) :(year+ "06"+day);//如果天数<= 9 需要补0. 
      s.clear();
      s<<str;
      s>>date;
      s.clear();
      if(date % 2012 == 0 && date % 3 == 0 && date % 12 == 0){
        flag = true;
        break;
      }
    }
    if(flag){
      cout<<date<<endl;
      break;
    }
  }
  return 0;
}

上面使用字符串来做太过于麻烦,看了别人的代码发现可以直接做

#include<bits/stdc++.h>
using namespace std;
int date,m=6;
int main()
{
  for(int i = 1900; i < 2012; i++){//19480612。
    for(int j=1; j<=30; j++){
      date = i * 10000 + m* 100+j;
      if(date % 2012 == 0 && date % 3 == 0 && date % 12 == 0){  
        cout<<date<<endl;
        return 0;
      }
    }
  }
  return 0;
 } 


目录
打赏
0
0
0
0
29
分享
相关文章
|
9月前
OJ刷题:猜名次和找凶手
OJ刷题:猜名次和找凶手
49 0
|
10月前
【一刷《剑指Offer》】面试题 12:打印 1 到最大的 n 位数
【一刷《剑指Offer》】面试题 12:打印 1 到最大的 n 位数
【C语言】【典例详解】【刷题】猜名次&&猜凶手【循环练习】
【C语言】【典例详解】【刷题】猜名次&&猜凶手【循环练习】
213 0
10.【C++猜数字游戏(看一眼就会)】
10.【C++猜数字游戏(看一眼就会)】
162 0
倒置字符串、猜名次、猜凶手、杨辉三角(下)
倒置字符串、猜名次、猜凶手、杨辉三角(下)
倒置字符串、猜名次、猜凶手、杨辉三角(上)
倒置字符串、猜名次、猜凶手、杨辉三角(上)
leetcode每日一题.面试题62:圆圈中最后剩下的数字
leetcode每日一题.面试题62:圆圈中最后剩下的数字
75 0
【第十五届蓝桥杯备赛(bushi,写文凑个数)】蓝桥OJ---排列序数
文章目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 DFS
134 0
【CCCC】L3-001 凑零钱 (30分),01背包路径打印
【CCCC】L3-001 凑零钱 (30分),01背包路径打印
163 0