zoukankan      html  css  js  c++  java
  • 似魔鬼的步伐

    题面:

    假设他拥有N格体力。初始摩擦值为0,每次可以选择可以摩擦或者行走。摩擦消耗两格体力,第n次的摩擦值=第n-1次的摩擦值*2+2。行走消耗一格体力,第n次的摩擦值=第n-1次的摩擦值*1+1。求最大的摩擦值为多少?

    思路:

    贪心,消耗两格体力比消耗一格体力更优,所以如果n为奇数则先消耗一格体力,成为偶数,偶数的话全部消耗两个体力。

    代码:

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n,x;
     4 long long ans;
     5 const int p=1000000007;
     6 int main(){
     7     scanf("%d",&n);
     8     for (int i=1;i<=n;i++){
     9         scanf("%d",&x);
    10         if (x%2==0){
    11             ans=0;
    12             for (int i=1;i<=x/2;i++){
    13                 ans=(ans*2+2)%p;
    14             }
    15         }else{
    16             ans=1;
    17             for (int i=1;i<=x/2;i++){
    18                 ans=(ans*2+2)%p;
    19             }
    20         }printf("%lld
    ",ans);
    21     } 
    22 }
    View Code
  • 相关阅读:
    OpenCV笔记——cvFloodFill漫水填充算法
    C# 总结 随笔
    MYSQL存储过程 随笔
    MYSQL总结 随笔
    xPath 总结 随笔
    Javascript 总结 随笔
    linux中top查看cpu使用率超过100%
    页面优化小记1
    基于数据库的多语言解决方案
    基于消息队列的日志组件
  • 原文地址:https://www.cnblogs.com/Accpted/p/11185426.html
Copyright © 2011-2022 走看看