好玩的数字游戏

TK在虐题的同时,也喜欢玩游戏。
现在,有这样的一个游戏,规则是这样的:
先随机给出一个数字N,然后你在操场上把1到N的所有数字写成一排,就像这样:
123456789101112131415….
接着你在每个数字前面添上加减号,每逢排在奇数位上的数字,就写上加号;每逢排在偶数位上的数字,就写上减号。恩…最后你得到一个超级长的式子。并且可以算出这个式子的结果。
TK觉得这个游戏很有意思,于是他没日没夜地玩啊玩啊玩啊…
或许你觉得这个游戏没有意思…恩…但是,如果你是TK,对于给定的N,你能够算出来最后的结果应该是多少么?

输入格式:

多组数据。每个测试点的数据组数不超过1000组。
每一行仅一个正整数N。保证没有多余的什么奇怪的字符。
每个测试点的数据最后一行一定是数字0。代表这个测试点的结束。

输出格式:

对于每组数据,输出相应的结果。

大部分方法都是数位dp 我感到对奇偶性的分析不是很清晰 于是听到了czt的做法::
对于一个K位长的数,在第J位上,数字为I 对最终结果的贡献,,
一个直观的规律 把I这个数在J位上删去以后 发现剩下的数位顺序写下的数字即是 它的项数 
另一个直观的规律 发现对于上面提到的状态 依次写下对答案的贡献以后 发现它是一个 公比为1 或者-1 的等比数列!!!
于是就可以使用数学方法完成这题了
ps: 这题还是关于奇偶的分析太蛋疼 大脑内存太小了 有没有什么方法能改进改进??
 1 #include<cstdio>
 2 #define ll long long
 3 using namespace std;
 4 ll ans,n,pows[19];
 5 int main()
 6 {
 7     pows[0]=1; for(int i=1;i<=18;i++)
 8         pows[i]=pows[i-1]*10;
 9     while(1)
10     {
11         scanf("%lld",&n); if(n==0) return 0;
12         for(int i=1;i<=9;i++)for(int j=0;j<=15;j++)for(int k=j;k<=15;k++)
13         {
14             ll start,end,fr;
15             if(pows[j]*i+(k>j)*pows[k]>n) continue;
16             start=j==k?0:pows[k-1];
17             if(n>=pows[j]-1+pows[j]*i+pows[k+1]-pows[j+1]) end=pows[k]-1;
18             else if(n%pows[j+1]/pows[j]<i)
19                 end=n/pows[j+1]*pows[j]-1;
20             else if(n%pows[j+1]/pows[j]==i)
21                 end=n/pows[j+1]*pows[j]+n%pows[j];
22             else end=n/pows[j+1]*pows[j]+pows[j]-1;
23             fr=(((i&1&&j==0&&(k&1)==0)^(k&1)^(j&1))*2-1)*i;
24             if((k&1)==0&&j)
25             {
26                 if(((start^end)&1)==0) ans+=fr;
27             }
28             else ans+=(end-start+1)*fr;
29         }
30         printf("%lld\n",ans);ans=0;
31     }
32 }

转载于:https://www.cnblogs.com/wcz112/p/6341407.html

BZOJ2900 好玩的数字游戏相关推荐

  1. bzoj1236 KPSUM bzoj2900 好玩的数字游戏

    两个题目的区别只有单组数据和多组数据. 随便放一个的链接好了:传送门 2900: 好玩的数字游戏 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 99 ...

  2. Dev C++,一个好玩的猜数字游戏

    周末了,看了一点代码,发现有一个好玩的数字游戏,贡献给大家,个人觉得还是挺好玩的. 说个题外话,之前写的文章,都是零散的,主要是时间的原因,最近事情有点杂,一说到这个事情,我就心生愧疚,好像我一直说事 ...

  3. CASIO 5800P计算器游戏--猜数字游戏

    CASIO 5800P 计算器游戏--猜数字游戏原代码 我编的计算器小游戏--猜数字游戏 LbI I↙ "xxGUESS NUMBERxx xPROGRAMMER:JCHx -------- ...

  4. 猜数字游戏 由计算机,猜数字游戏玩法

    满意答案 changsheng668 推荐于 2017.10.06 采纳率:50%    等级:12 已帮助:12674人 这个游戏的名字大家可以随便起无所谓的,我们生活中也经常玩这个游戏,满有趣的 ...

  5. 关于猜数字游戏以及关机指令

    这几天学习到了一些没有接触过的东西,因此在这里记录下. 首先是猜数字游戏: 这个小程序特别简单,只要知道相关的几个关键函数就能明白 它的主要函数有rand(返回随机数)以及srand(用来设置随机数的 ...

  6. 【趣学】C语言猜数字游戏

    目录 一.前言 二.从游戏初始界面开始 三.游戏实现 ①rand函数 ②srand函数 ③时间戳 ④time函数 一.前言 学习的过程有时候会有些许枯燥,但换一种方式学习也算是一种有趣的事情,呀哈,写 ...

  7. 上班划水,给女朋友做个猜数字游戏

    上班划水的时候无意中看到了这篇文章 编程学累了?不妨写个小游戏和女朋友一起嗨起来~~ 作为一个有女朋友的程序员,自己也试着用Unity实现一下,带有界面的游戏,女朋友应该喜欢玩,哈哈哈 猜数字游戏,主 ...

  8. C语言实现简单的猜数字游戏【快来看看你会吗~~】

    猜数字游戏 前言 游戏描述 思路 第一步,生成菜单 第二步,编写外部循环--反复玩 第三步,编写游戏代码 综上,整个游戏的代码如下: 前言 相信许多同学和我一样,刚接触c语言一段时间后,觉得c语言特别 ...

  9. 用法 stl_51Nod 2160 数字游戏 STL基本用法

    目录 目录 1. 题目描述 1.1. Limit 1.2. Problem Description 1.3. Input 1.4. Output 1.5. Sample Input 1.6. Samp ...

最新文章

  1. 复数 Complex Number 教程
  2. 阻塞队列只有一个线程在同一时刻对其进行或者读或者写
  3. 架设搭建开源搜索服务器 - Sphinx/Coreseek 安裝
  4. suoi46 最大和和 (线段树)
  5. leetcode96. 不同的二叉搜索树 动归vs数学?
  6. nginx的脚本引擎(一)
  7. 全字库说文解字字体_【180期】可商用字体大全,无版权纠纷!
  8. vue cli element 项目结构
  9. 洛谷 P1187 3D模型
  10. 【python】list,dict赋值不要用等号,要用extend,update
  11. 64位win10下安装xgboost python包的教程
  12. SQL server int 转char类型
  13. Chrome开发者调试工具Copy element和Copy OuterHTML区别
  14. php百度网盘登录,php百度网盘同步_http200_mmdb
  15. 读书笔记——魔鬼经济学3
  16. 一款网页游戏外挂开发-数据抓包2
  17. CSS margin 用法
  18. 2017.11.15作业
  19. 网易定向预研图形学项目摘录
  20. 【领域泛化论文阅读】Semantic-Aware Domain Generalized Segmentation

热门文章

  1. Lagrange乘子法与KTT条件
  2. mos管 rl_三极管与MOS管工作状态图解分享
  3. 每日总结-----12月15日
  4. 系统安装 使用VMware15安装Win7系统
  5. Coding(码市)教程(一):基础配置
  6. VMware 中搭建 SylixOS 环境
  7. 求html写一个羽毛球拍的代码,一种组合式羽毛球拍的制作方法
  8. 「面向信仰编程」Draven 专访:像写代码一样,用树形的结构写文章
  9. 解决Macbook Pro蓝牙不可用问题
  10. APP开发的需求分析