Simple Addition Expression

Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1723    Accepted Submission(s): 675

Problem Description
A
luxury yacht with 100 passengers on board is sailing on the sea in the
twilight. The yacht is ablaze with lights and there comes out laughers
and singing from the hall where an evening party is in full swing.
People are singing, dancing and enjoying themselves.

The yacht is
equipped with the most advanced navigation and driving system which can
all be manipulated by a computer. When the captain notices that there
is only gentle breeze and the sea waves are not high, he starts the
autopilot. The yacht sails forward smoothly, ploughs the waves. When
it’s completely dark, the passengers start to feel a little funny for
sudden forward rushes or sudden decelerations or slight swings. The
captain immediately walks to the driving platform and switches the
autopilot to human manipulation. The yacht returns back to normal and
the party restarts. Laughers come back, too.

The captain summons
the engineer on board to do a thorough check of the navigation system.
It turns out that only the computer is out of order, but the exact
failure is still unclear. There is a computer scientist among the
passengers who is also invited to the cab to give a hand. He first
inputs several groups of data to test the computer. When he inputs
1+2+3, the computer outputs 6, which is exactly right. But when he
inputs 4+5+6, the computer outputs 5, which is wrong. Then he inputs
12+13+14, and gets 39, another right answer, while he inputs 14+15+16,
and gets 35, another wrong answer. After the test, the computer
scientist says smilingly: “the failure is clear now. The computer's
adder can not carry." After excluding the failure, the captain restarts
the autopilot and the yacht returns back to normal, sailing smoothly on
the sea.

The captain and the engineer invite the computer
scientist to sit down and have a talk. The computer scientist tells a
story as following:

A former mathematician defined a kind of simple addition expression.
If
there is an expression (i) + (i+1) + (i+2), i>=0, when carried out
additive operations, no position has a carry, it is called simple
addition expression.

For instance, when i equals 0, 0+1+2 is a
simple addition expression, meanwhile when i equals 11, 11+12+13 is a
simple addition expression, too. Because of that no position has a
carry.

However, when i equals 3, 3+4+5 is not a simple addition
expression, that is because 3+4+5 equals 12, there is a carried number
from unit digit to tens digit. In the same way, when i equals 13,
13+14+15 is not a simple addition expression, either. However, when i
equals 112, 112+113+114 is a simple addition expression. Because
112+113+114 equals 339, there is no carry in the process of adding.

when
the students have got the definition of simple addition expression, the
mathematician puts forward a new question: for a positive integer n,
how many simple addition expressions exist when i<n. In addition, i
is the first number of a simple addition expression.

when the value of n is large enough, the problem needs to be solved by means of computer.

 
Input
There are several test cases, each case takes up a line, there is an integer n (n<10^10).

 
Output
Output the number of all simple addition expressions when i<n.

 
Sample Input
1
2
3
4
10
11
 
Sample Output
1
2
3
3
3
4
 
Source
 
题意:
问小于n的数i中i+i+1+i+2不会产生进位的i有多少个。
代码:
 //最近一段时间被数学搞晕了,各种烦躁,迷糊。这道题可以把数拆开来,首位可以取1,2,3,中间可以取0,1,2,3,最后一位可以取0,1,2。有多少个i,比如拆2345,
//先计算0~999有多少个,再计算1000~1999有多少个,再计算2000上面0~99,100~199,200~299有多少个,再计算300上面........如果第一位大于3,比如4321,那么他
//和9999没什么区别,中间的几位也是同样的道理。
#include<bits\stdc++.h>
#define ll long long
using namespace std;
char s[];
ll f[];
int main()
{
f[]=;f[]=; //10以下的有几个,下面的同理
for(int i=;i<=;i++)
{
f[i]=*f[i-];
}
while(scanf("%s",s)!=EOF)
{
ll ans=;
int len=strlen(s);
for(int i=;i<len;i++)
{
if(i==&&i!=len-)
{
if(s[i]-''>)
{ans+=f[len-i];break;}
else ans+=(s[i]-'')*f[len-i-];
}
else if(i!=&&i!=len-)
{
if(s[i]-''>)
{ans+=f[len-i];break;}
else ans+=(s[i]-'')*f[len-i-];
}
else if(i==len-)
ans+=s[i]-''>?:s[i]-'';
}
printf("%lld\n",ans);
}
return ;
}

*HDU 2451 数学的更多相关文章

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

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

  2. HDU 5984 数学期望

    对长为L的棒子随机取一点分割两部分,抛弃左边一部分,重复过程,直到长度小于d,问操作次数的期望. 区域赛的题,比较基础的概率论,我记得教材上有道很像的题,对1/len积分,$ln(L)-ln(d)+1 ...

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

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

  4. HDU 5976 数学,逆元

    1.HDU 5976 Detachment 2.题意:给一个正整数x,把x拆分成多个正整数的和,这些数不能有重复,要使这些数的积尽可能的大,输出积. 3.总结:首先我们要把数拆得尽可能小,这样积才会更 ...

  5. [ An Ac a Day ^_^ ] hdu 4565 数学推导+矩阵快速幂

    从今天开始就有各站网络赛了 今天是ccpc全国赛的网络赛 希望一切顺利 可以去一次吉大 希望还能去一次大连 题意: 很明确是让你求Sn=[a+sqrt(b)^n]%m 思路: 一开始以为是水题 暴力了 ...

  6. hdu 4506(数学,循环节+快速幂)

    小明系列故事——师兄帮帮忙 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  7. hdu 4432 数学杂题

    http://acm.hdu.edu.cn/showproblem.php?pid=4432 6分钟写的代码,一上午去调试,, 哎,一则题目没看懂就去写了,二则,哎,,恶心了.在坚持几天然后ACM退役 ...

  8. hdu 4811 数学 不难

    http://acm.hdu.edu.cn/showproblem.php? pid=4811 由于看到ball[0]>=2 && ball[1]>=2 && ...

  9. hdu 5288 数学 ****

    给一个序列 定义函数f(l ,r) 为区间[l ,r] 中 的数ai不是在这个区间其他任意数aj的倍数 求所有f(l,r)之和 通过预处理,记录 a[i] 的左右边界(所谓的左右边界时 在从 a[i] ...

随机推荐

  1. Ubuntu 安装php+mysql 环境

    新系统安装完毕后,首先运行apt-get update 更新apt库. 然后安装ssh,输入apt-get install openssh-server,安装ssh是为了可以远程操作,不然坐在机房实在 ...

  2. linux 文件系统

    / 根目录 /bin 存放着启动时所需要的普通程序.很多程序在启动以后也很有用,它们放在这个目录下是因为它们经常要被其他程序调用 /boot 很多Linux系统把内核映像和其他一些和启动有关的文件都放 ...

  3. 数据库sql语句规则

    sql练习: 创建一个名称为mydb1的数据库. create database mydb1; 查看库 show databases; 创建一个使用utf-8字符集的mydb2数据库. create ...

  4. 中国知网cnki(永久会员账号)

    中国知网cnki(永久会员账号)大男孩免费分享   网站简介: (中国知网http://www.cnki.net/)中国知网是国家知识基础设施(National Knowledge Infrastru ...

  5. jquery追加内容

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. GroupBy(..)的四种声明方式的理解及调用

    这里我们以 List<Student> studs作为 source,但是注意,studs中的学生可以是分别属于不同的班级和年级 先看GroupBy的第一种声明: public stati ...

  7. Vi命令备忘

    备忘 Ctrl+u:向文件首翻半屏: Ctrl+d:向文件尾翻半屏: Ctrl+f:向文件尾翻一屏: Ctrl+b:向文件首翻一屏: Esc:从编辑模式切换到命令模式: ZZ:命令模式下保存当前文件所 ...

  8. xml之dom4j解析

    * 使用dom4j解析xml 实例在java520里面 TextDom4j * dom4j,是一个组织,针对xml解析,提供解析器dom4j * dom4j不是javase的一部分,想要使用第一步需要 ...

  9. Tensorflow 处理libsvm格式数据生成TFRecord (parse libsvm data to TFRecord)

    #写libsvm格式 数据 write libsvm     #!/usr/bin/env python #coding=gbk # ================================= ...

  10. ng-table 简单实例

    今天用的AngularJs需要做个分页,于是用ng-table去实现,不过这个官网感觉有点坑,说的不够清楚. 下面实现了一个Demo实力,代码如下: <!DOCTYPE html> < ...