HDU1013 POJ1519 Digital Roots(解法二)
来源:互联网 发布:链轮设计参数计算软件 编辑:程序博客网 时间:2024/06/05 20:51
该问题的最佳解法是利用数论的9余数定理来计算数根。一个数的数根等于该数的9的余数,若余数为0则结果为9。
问题链接:HDU1013 POJ1519 Digital Roots。入门练习题,用C语言编写程序。
问题简述:输入若干正整数,求其数根,直到输入为0为止。
问题分析:数根是指整数的各个位的数字之和。如果其和为1位整数,则为结果;如果其和为多位整数,则再将各位数字相加,直到其和为1位数为止。这个问题的大陷阱是,没有指出整数是多少位的。即使使用unsignde long long类型,也可能会溢出的。所以,需要按字符串来处理。
程序说明:(略)。
之前的版本(参见:HDU1013 POJ1519 Digital Roots)先把数读到数据缓冲区再处理,所以重新写了这个程序。一边输入一边处理更好,可以省去存储空间。
另外一个版本参见:HDU1013 POJ1519 Digital Roots(解法三)。
AC的C语言程序如下:
/* HDU1013 POJ1519 Digital Roots */#include <stdio.h>int main(void){ char in; int digitroot; for(;;) { // 读入一个字符 in = getchar(); // 判断结束条件 if(in == '0') break; // 计算数根 digitroot = 0; while(in != '\n') { // step1 计算各位数字之和 digitroot += in - '0'; // step2 每个10都变为1 digitroot = digitroot / 10 + digitroot % 10; in = getchar(); } // 输出结果 printf("%d\n", digitroot); } return 0;}
1 0
- HDU1013 POJ1519 Digital Roots(解法二)
- HDU1013 POJ1519 Digital Roots(解法三)
- HDU1013 POJ1519 Digital Roots
- hdu1013(Digital Roots)
- HDU1013 - Digital Roots (模拟)
- HDU1013 Digital Roots
- hdu1013 Digital Roots
- hdu1013 Digital Roots
- HDU1013 Digital Roots
- hdu1013-Digital Roots
- hdu1013 Digital Roots
- hdu1013 Digital Roots
- hdu1013:Digital Roots
- hdu1013 Digital Roots 数论
- hdu1013 Digital Roots
- HDU1013 Digital Roots
- HDU1013 Digital Roots
- HDU1013 Digital Roots
- NYOJ背包问题
- requestWindowFeature(Window.FEATURE_NO_TITLE)无效解决方法
- 魔都,3年,程序员到CTO
- 如何在mac eclipse引入win版本eclipse的android项目
- 安装mysql-python:EnvironmentError: mysql_config not found
- HDU1013 POJ1519 Digital Roots(解法二)
- Maven deploy时报Fatal error compiling: tools.jar not found错误的问题处理
- linux socket常用配置
- Python新手学习基础之数据类型——字符串类型
- Spring中的Aware
- 如何做好一个Sprint Demo
- [心得感想]16.7.14-21 DIARY
- 神级代码编辑软件(Sublime Text 3) v3.3114 汉化特别版
- Django中实现文件下载功能