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. iOS设计 - 一款APP从设计稿到切图过程概述

    这篇文章站在GUI设计师的角度概述了APP从项目启动到切片输出的过程,相当于工作流程的介绍.这里写的不是一种规范,只是一种工作方法,加上技术的更新是非常快的,大家在具体工作中,一定要灵活运用. 这里我 ...

  2. 剑指Offer-【面试题04:替换空格】

    package com.cxz.question4; /* * 请实现一个函数,把字符串中的每个空格替换成"%20",例如"We are happy.",则输出 ...

  3. XOR Swap

    swap(a, b): a ^= b b ^= a a ^= b 先明确一下,a ^ a = 0,同时对于一切数x ^ 0 = x 可以这样理解,第三行: b ^= a b ^= a ^ b b = ...

  4. Xcode 突然有部分文件不显示

    今天突然Xcode抽风了,突然我的项目中的文件好多不显示出来,本地文件夹都有,见鬼了..... 真心坑死了,于是乎就找度娘了,果然被我发现了 看见这个蓝色小时钟没呀,就是他在捣鬼,我点击一下变成灰色就 ...

  5. 学习微信小程序之css10外边距

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

  6. 【转】C# 控件的自定义拖动、改变大小方法

    在用VS的窗体设计器时,我们可以发现控件都是可以拖动的,并且还可以调整大小.怎么在自己的程序中可以使用上述功能呢? 下面的方法值得借鉴! using System; using System.Wind ...

  7. selenium使用笔记(二)——Tesseract OCR

    在自动化测试过程中我们经常会遇到需要输入验证码的情况,而现在一般以图片验证码居多.通常我们处理这种情况应该用最简单的方式,让开发给个万能验证码或者直接将验证码这个环节跳过.之前在技术交流群里也跟朋友讨 ...

  8. PTAM 编译安装 on MAC(mavericks)

    最近有需要研究PTAM,所以需要在我的MAC上编译安装,整个过程让人非常崩溃各种问题陷阱.现在整理一下编译过程.我已经成功在MAC上编译.那么接下来我会详细讲解整个过程: 注意: 部分链接可能需要FQ ...

  9. SQLSERVER JDBC 存储过程调用偶尔很慢的原因之一【sp_sproc_columns】

    在对于CallableStatement进行参数赋值或者取值时,建议直接用索引号,避免使用参数名称! 若使用参数名称,每次调用该存储过程时,jdbc会自动执行 exec sp_sproc_column ...

  10. VS2013发布网站,vs2013发布

    转自:http://www.bkjia.com/Asp_Netjc/1018876.html 本文讲解网站建好之后,如何发布在服务器上面.这也是阿辉最近遇到的问题,经过不停的查找资料终于解决了,但是有 ...