【来源】

2008年哈尔滨区域赛

【题目链接】:

http://acm.hdu.edu.cn/showproblem.php?pid=2451

【参考博客】:

HDU 2451 Simple Addition Expression

【题意】:

题意是要判断前n位数字(不包括n),有多少个数字 i 跟前面两个 i+1 , i+2 ,相加时不进位 。

符合要求的数字就是个位 0 ~ 2 ,其余位 0 ~ 3。

用一个dfs就可以搜出来了。

对于当前位是 x 的话 , 若果 x > 3 , 可以直接得出可以构成  [ 4^(位数-1) * 3 ] 个数

若果 x <= 3 的话 , 就可以构成 [  (x-1)*4^(位数-1)*3 + 后面的位能组成数字的数目(递归求) ]。

【注意】

我第一次交的时候忽略了一种情况,就是其他位置(除个位外)为3的情况。

真的忽略了,一直以为都是3*3*3.....,其实是4*4*4*.....*3

别人都是用回溯什么写的,

我自己用for循环写出来了。

 #include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
typedef long long ll;
const ll N = 1e10;
const ll M = ;
int main()
{
ll n;
while(~scanf("%lld",&n)) {
ll ans = , tmp = ; if( n <= ){
printf("%lld\n",min(3ll,n));
continue ;
}
n ++ ;
for (ll i = N, j = M; i >= ; i /= , j /= ) {
if (n / i == ) continue;
if (n / i >= ) {
//printf("# 1 %lld , %lld \n ",i,j);
ans += tmp * j;
break;
}
if (n / i <= ) {
ans += (n / i) * j/ ;
//printf("# 2 %lld , %lld \n ",i,j);
} n = n % i ;
}
printf("%lld\n", ans);
}
return ;
}

【计数】Simple Addition Expression的更多相关文章

  1. 组合数学第一发 hdu 2451 Simple Addition Expression

    hdu 2451 Simple Addition Expression Problem Description A luxury yacht with 100 passengers on board ...

  2. HDU 2451 Simple Addition Expression(组合数学)

    主题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2451 Problem Description A luxury yacht with 100 pass ...

  3. HDU2451:Simple Addition Expression

    Problem Description A luxury yacht with 100 passengers on board is sailing on the sea in the twiligh ...

  4. 【HDOJ】2451 Simple Addition Expression

    递推,但是要注意细节.题目的意思,就是求s(x) = i+(i+1)+(i+2),i<n.该表达中计算过程中CA恒为0(包括中间值)的情况.根据所求可推得.1-10: 31-100: 3*41- ...

  5. HDU 2451 Simple Addition Expression

    题目大意:有一个关于 简单加法表达式  的定义告诉你,就是  选一个数字i  如果 i+(i+1)+(i+2) 它的和,没有任何一位进位的话,那就是 一个i的简单加法表达式,求小于n的表达式数目. 题 ...

  6. hdu 2451 Simple Addition Expression(数位DP )成败在于细节

    亚洲区域赛的题,简单的数位DP题,注重细节. 任何细节都有可能导致wa,所以没有绝对的水题. 把握好细节,此题便A. #include<stdio.h> __int64 getans(__ ...

  7. HDU 2451 Simple Addition Expression(找规律,考验智商)

    题目 最近比赛的题目好多签到题都是找规律的考验智商的题目啊,,,我怎么越来越笨了,,,, 通过列举,可以发现规律: 从左往右按位扫这个数: 当数的长度大于1时: 当首位大于3时,答案就是4*4*4*… ...

  8. 10994 - Simple Addition(规律)

    Problem E Simple Addition Input: Standard Input Output: Standard Output Let’s define a simple recurs ...

  9. uva 10994 - Simple Addition(规律)

    题目链接:uva 10994 - Simple Addition 题目大意:给出l和r,求∑(l≤i≤r)F(i), F(i)函数题目中有. 解题思路:由两边向中间缩进,然后l和r之间的数可以按照1~ ...

随机推荐

  1. load加载层

    //eg1 var index = layer.load(); //eg2 var index = layer.load(1); //换了种风格 //eg3 var index = layer.loa ...

  2. pl/sql Developer连接oracle远程数据库

    1.下载地址:PLSQL Developer 12.1正式版64位(含中文语言包.注册码).rar   https://download.csdn.net/download/bokewangyu/11 ...

  3. 子类中执行父类的方法(引出super()与mro列表)

    1. 我们先想一下在python中如果子类方法中想执行父类的方法,有什么方式?大概有三种: Parent.__init__(self, name) # 通过父类的名字,指定调用父类的方法 super( ...

  4. git与github建立仓库连接步骤(纯小白教程)

    一.先对git 进行用户设置 首先你得在网上下载git软件并且安装,一路默认安装就好了,然后就可以开始本地仓库的建立了.打开你安装好的git, 在开始菜单里面找到git文件夹里面的git bash端 ...

  5. oracle获取当前月的第一个星期五

    -to_char(trunc(sysdate,'month'),'D') end || '号是当月的第一个星期五' from dual;

  6. Ruby on Rails 的模型 validates 验证

    validate(), 这个方法在每次保存数据时都会被调用.如:def validate if name.blank? && email.blank?  errors.add_to_b ...

  7. Redis高级特性及应用场景

    Redis高级特性及应用场景 redis中键的生存时间(expire) redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它. 过期时间可以设置为秒或者毫秒精度. ...

  8. 线程池使用Callable示例【我】

    实际工作中可以把下面的代码直接拿过去改改即可 package threadtest; import java.util.ArrayList; import java.util.HashMap; imp ...

  9. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-3.登录检验JWT实战之封装通用方法

    笔记 3.登录检验JWT实战之封装通用方法     讲解:引入相关依赖并开发JWT工具类 1.加入相关依赖 <!-- JWT相关 -->             <dependenc ...

  10. 阿里云Centos7挂载数据盘

    查看磁盘情况 fdisk -l fdisk /dev/vdb 根据提示,分别输入 n. p. . enter.enter.wq fdisk -l mkfs.ext3 /dev/vdb1 挂载磁盘,写入 ...