计蒜客-1189-树根

数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根。如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。如此进行下去,直到得到是一位数为止。

比如,对于 2424 来说,把 22 和 44 相加得到 66,由于 66 是一位数,因此 66 是 2424 的数根。再比如 3939,把 33 和 99 加起来得到 1212,由于 1212 不是一位数,因此还得把 11 和 22 加起来,最后得到 33,这是一个一位数,因此 33 是 3939 的数根。

输入格式
一个正整数(小于 10^{1000}10
1000
)。

输出格式
一个数字,即输入数字的数根。

输出时每行末尾的多余空格,不影响答案正确性

样例输入复制
24
样例输出复制
6

本题乍一看很简单,但是已看数据范围很恶心,尝试用long long ,只能过部分case,所以选择了大整数结构体,这样既可通过

//@authir:hairu,wu
//@from:ahut
#include<iostream>
using namespace std;

struct num{
	int a[10000];
	int len;
	num(){
		len=0;
	}
};

int f(num x){
	if(x.len==1) return x.a[0];
	else{
		num t;
		int tmp;
		for(int i=0;i<x.len;i++){
			tmp+=x.a[i]; 
		}
		while(tmp!=0){
			int r=tmp%10;
			tmp=tmp/10;
			t.a[t.len++]=r;
		}
		return f(t);
	}
}

num trans(string str){
	num a;
	int len=str.length();
	for(int i=len-1;i>=0;i--){
		a.a[a.len++]=str[i]-'0';
	}
	return a;
}

int main(){
	string str;
	cin>> str;
	num a=trans(str);
	cout<<f(a)<<endl;
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
课程设计 数字式温度计设计 组长:徐春 2006004071 组员:蒋薇薇 2006004041 张静 2006004039 雷小利 2006004042 叶赛虎 2006004068 杨欣 2006004012 摘要:随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领 域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度计,本温 度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警 。 关键词:单片机,数字控制,温度计, DS18B20,AT89S52 0 引言 随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带 来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越 来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技 术入手,一切向着数字化控制,智能化控制方向发展。 本设计所介绍的数字温度计与传统的温度计相比,具有读方便,测温范围广,测温 准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用 ,该设计控制器使用单片机AT89S52,测温传感器使用DS18B20,用3位共阳极LED码管 以串口传送据,实现温度显示,能准确达到以上要求 1、设计方案 本设计方案的选择主要是感温元件的选择,经查阅资料,IC式感温器在市场上应用比 较广泛的有以下几种: (1)AD590:电流输出型的测温组件,温度每升高1摄氏度K(凯式温度),电流增1uA, 温度测量范围在- 55 ~150 之间。其所采集到的据需经A/D转换,才能得到实际的温度值。. (2)DSl8B20:除了测量温度外,它还可以把温度值以数字的方式(9Bit)送出,温度送 出的精度为O.5 ,温度测量范围在-55 ~125 之间,可以做恒温控制。 (3)SMARTEC感温组件:这是一只3个管脚感温IC,温度测量范围在—45 ~130。C。误 差可以保持在0.7 以内。 本设计选用DSl8820感温IC,这是因其性能参符合设计要求,接口简单,内部集成 了A/D转换,测温更简便,精度也较高,反应速度快,且经过市场考察,该芯片易购买 ,使用方便。 本电路主要由以下三大模块组成。 模块一:DSl8B20芯片。 实现功能:实现温度的采集和模拟量与数字量的转换,采集后的据经过芯片内部模 转换后通过一个单总线传送到单片机的信号输入口。 模块二:AT89S52单片机。 实现功能:通过程序开发并输入到单片机,使其具备一定的据处理能力,同时通过 对DSl8B20芯片的读和写把检测到的据转换成编码写到AT89S52单片机中,再通过单片 机的输出口输出据经过控制由LCDl602动态显示出来。 模块三:LCDl602。 实现功能:将单片机输出的据进行动态显示。 2、DSl8B20芯片 美国DALLAS生产的DSl8B20,将各种数字转换电路都集成在一起,省去了电路中的转 换、放大等单元,节约了大量的引线和控制通道切换的逻辑电路,DS18B20内部主要由四 部分组成:暂态存储器、64位ROM、温度传感器及温度报警触发装置;DSl8B20的测量温 度范围从一55 ~+125 ,所以在实际的应用中具有极高的性价比。 2.1性能特点 1)在一10 ~+85 范围内,DSl8B20具有±O.5 的精度。 2)独特的寄生电源供电方式和外接电源供电方式并存,且供电范围为3.0V~5.5V。 3)具有可编程的9~12位温度转换精度。 4)采用"一线总线"结构,且处理只要一只I/0端口就可以实现多点测温,节省硬件资 源。 5)内部设有程序设置寄存器,可用来设置各种参:分辨率、报警温度等。 2.2 DSl8B20的内部存储器 由图1可以看到,Dsl8820的内部存储器是由8个单元组成,其中第0、1个存放测量温 度值,第2、3分别存放报警温度的上下限值,第4单元为配置单元,5、6、7单元在DSl8 820这里没有被用到。对于第4个寄存器,用户可以设置温度转换精度,系统默认12bit转 换精度,相当于十进制的0.0625 ,其转换时间大约为750磷。具体见表l。 图1 内部存储器结构图 "R1 "R0 "转换精度(16进制"转换精度(十进制"转换时 " " " ") ") "间 " "0 "0 "9bit "0.5 "93.75ms" "0 "1 "10bit "0.25 "187.5ms" "1 "0 "11bit "0.125 "375ms " "1 "1 "12bit "0.0625 "750ms " 表1 温度精度配置 由于DS18B20采用的"一线总线"结构,所以据的传输与命令的通讯只要通过微处理 器的一根双向I/o口就可以实现。DSl8

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小吴同学GOGOGO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值