zoukankan      html  css  js  c++  java
  • suseoj The wheat of the prime minister

    1202: 2018四川理工学院大学生ACM程序设计:The wheat of the prime minister

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 4  解决: 3
    [提交][状态][讨论版][命题人:liangxingjian]

    题目描述

           Sissa Ben, a minister in ancient India, invented the game of chess. The king intended to reward him because of it. The minister said, “I want nothing but some wheat. Please put a grain of wheat on the first square of the chessboard, two on the second, four on the third, eight on the fourth, ..., and so on, doubling the number for each following square, and give me enough grains to cover the 64 squares of the chessboard.” The king ordered a bag of wheat brought to the palace. But when the counting began with one gain for the first square, two for the second, four for the third, and so on, the bag was emptied before the 20th square. More bags were brought but the number of grain needed for the following squares increased so rapidly that the king soon realized that he was not able to keep his promise even with all the crops in the whole India!
            Suppose the king had n wheat, which square should the last one cover?

    输入

    the number of wheat: n(n<2^63-1), end by 0

    输出

    which square should the last one cover

    样例输入

    35
    123456
    0

    样例输出

    6
    17

    题目大意:
      ①、求A[1] = 1, A[2] = 2, A[3] = 4, ..., A[64]酱紫的序列 A{n} = pow(2, n-1)
      ②、S[1] = A[1], S[2] = A[1] + A[2], S[3] = A[1] + A[2] + A{3} ..., S{64} 前n项和
      ③、S[n]第一次 >= 题目输入的数据是在第几位

    核心代码:
      
    1 void cal_excel()
    2 {
    3     A[1] = 1;
    4     for(int i = 2; i <= 64; ++ i)
    5     {
    6         A[i] = A[i-1] + pow(2, i-1);
    7     }
    8     return ;
    9 }

    C/C++代码实现(AC):

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstring>
     4 #include <cstdio>
     5 #include <cmath>
     6 #include <stack>
     7 #include <map>
     8 #include <queue>
     9 
    10 using namespace std;
    11 long long A[70];
    12 
    13 void cal_excel()
    14 {
    15     A[1] = 1;
    16     for(int i = 2; i <= 64; ++ i)
    17         A[i] = A[i-1] + pow(2, i-1);
    18 }
    19 
    20 int main()
    21 {
    22     cal_excel();
    23     long long n;
    24     while(~scanf("%lld", &n), n)
    25     {
    26         for(int i = 1; i <= 64; ++ i)
    27         {
    28             if(A[i] >= n)
    29             {
    30                 printf("%d
    ", i);
    31                 break;
    32             }
    33         }
    34     }
    35     return 0;
    36 }
     
  • 相关阅读:
    Oracle 数据库(oracle Database)Select 多表关联查询方式
    Mysql下在某一列后即表的某一位置添加新列的sql语句
    通过javascript库JQuery实现页面跳转功能代码
    Linux 流量监控软件 NetHogs
    php和mysql中uft8中文编码乱码的几种解决办法
    Codeigniter 2.0多目录配置详解
    PHP编程54条必知
    Ubuntu 安装XAMPP集成环境软件包 与 运行WordPress 的简单方法
    Ubuntu 12.04 lts / Win7双系统安装方法
    smarty的配置使用
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/9055826.html
Copyright © 2011-2022 走看看