FZU 1057 a^b 【数论/九余定理】
2024-08-31 06:00:09
Accept: 1164 Submit: 3722
Time Limit: 1000 mSec Memory Limit :
32768 KB
Problem Description
对于任意两个正整数a,b(0<=a,b<10000)计算ab各位数字的和的各位数字的和的各位数字的和的各位数字的和。
Input
输入有多组数据,每组只有一行,包含两个正整数a,b。最后一组a=0,b=0表示输入结束,不需要处理。
Output
对于每组输入数据,输出ab各位数字的和的各位数字的和的各位数字的和的各位数字的和。
Sample Input
2 3
5 7
0 0
5 7
0 0
Sample Output
8
5
5
Source
FZUPC Warmup 2005
【分析】:前几天刚好发布过一片关于同余运算结论的博客。
1.九余数定理:一个数的每位数字之和等于这个数对9取余,如果等于0就是9
2.假设一个数的各位数字分别是a1,a2...an ,则 (a1a2...an)%9=(a1+a2+...+an)%9
3.计算a^b各位数字的和的各位数字的和的各位数字的和的各位数字的和,可以转化为(a*a*a*...)%9 的结果,又有公式(a*b)%n = ((a%n)*(b%n)) % n;则可以循环的求解。
注意用在线算法,边算边取模,就不会T。就是说一个一个的乘即可,变乘边取模。这里只是针对n不大的情况。如果n太大,利用快速幂即可。
【代码】:
#include <iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<streambuf>
#include<cmath>
#include<string>
using namespace std;
#define ll long long
#define oo 10000000 int x,n;
ll sum;
int main(){
while (~scanf("%d%d",&x,&n),x&&n){
sum=;
for (int i=;i<n;i++)
sum=(sum*x)%; if (sum==)
printf("9\n");
else
printf("%lld\n",sum);
}
return ;
}
数论
【同类】:HDU-人见人爱A^B
最新文章
- php中环境变量
- 有1,2,3一直到n的无序数组,排序
- Android常见控件— — —EditText
- ruby中字符的转换
- git 忽略文件夹
- Flyway--数据库版本管理和控制工具
- 简述Java变量和强制转换类型
- Fragment基础操作
- Qt 快捷键
- 解决nginx下connect() to 127.0.0.1:3000 failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: 错误信息
- JAVA 没有重载运算符,那么 String 类型的加法是怎么实现的,以及String类型不可变的原因和好处
- centos重启报错Umounting file systems:umount:/opt:device is busy
- 搭建ssh框架项目(一)
- Simple Logging Facade for Java 简单日志门面(Facade)
- 基于duxshop遍历无限级分销用户的纵向递归
- 一个flume agent异常的解决过程记录
- js删除字符串的最后一个字符三种方法
- [C#][控件]WebBrowser 使用范例
- 欢迎来怼---作业要求 20171015 beta冲刺贡献分分配规则
- 160526、高并发之LVS搭建负载均衡