nyoj 485 A*B的问题
来源:互联网 发布:奇幻咔咔差不多的软件 编辑:程序博客网 时间:2024/05/16 10:27
A*B Problem
- 描述
设计一个程序求出A*B,然后将其结果每一位相加得到C,如果C的位数大于等于2,继续将C的各位数相加,直到结果是个一位数k。
例如:
6*8=48;
4+8=12;
1+2=3;
输出3即可。
- 输入
- 第一行输入一个数N(0<N<=1000000),表示N组测试数据。
随后的N行每行给出两个非负整数m,n(0<=m,n<=10^12)。 - 输出
- 对于每一行数据,输出k。
- 样例输入
36 81234567 67454 1232
- 样例输出
345
先来一种麻烦的算法:::
#include<stdio.h>
#include<string.h>
int main()
{
int t;
scanf("%d",&t);//t组数据
while(t--)
{
int c=0,i,h1,h2,j,w=0;
char a[1000],b[1000];
int s1[1000],s2[1000],s[2000];
memset(s,0,sizeof(s));
scanf("%s %s",a,b); //读取字符
h1=strlen(a);h2=strlen(b); //长度
for(i=0;i<h1;i++)
{
s1[i]=a[h1-1-i]-'0'; //字符转换成数字,并且反过来存储
}
for(j=0;j<h2;j++)
{
s2[j]=b[h2-1-j]-'0'; //同上
}
for(i=0;i<h1;i++)
for(j=0;j<h2;j++)
{
s[i+j]=s[i+j]+s1[i]*s2[j]; //大数相乘的做法,依次相乘
}
for(i=0;i<=h1+h2;i++) //处理一下进位
{
int k=s[i]+c;
s[i]=k%10;
c=k/10;
}
////以上就是大数相乘的做法
for(i=h1+h2;i>=0;i--)
{
w=w+s[i];
}
int m=w; //找一个数纪录这个 各位数字相加的和
while(m>9) //如果m<9的话,就说明现在的数字是一位数,所以跳出,如果不是, 就说明这个数字至少是两位数,所以要进行一下操作
{
m=0; //预处理
int u;
for(i=0;w>10;i++)
{
u=w%10; //每次取个位数
w=w/10; //删去个位数
m=m+u; //每次相加
}
m=m+w; //当w>10的时候,最后加上w
}
printf("%d\n",m); //循环处理之后,m最终得到个位数,输出
}
return 0;
}
///////////////综上所述 ,就是用大数相乘的方法进行操作,比较麻烦
首先举个例子::::(30*80)%9=(30%9)*(80%9)%9,,,,结果一样哦
下面就是简单的方法,前辈说是摸九法:
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
long long a,b;
scanf("%lld %lld",&a,&b); //注意到范围,所以用%lld
if(a==0||b==0) //有一个数字是0,结果是0
printf("0\n");
else
{
int tp;
tp=(a%9)*(b%9)%9; //我感觉就是分开对9去余,再相乘而已
if(tp==0) //如果tp是0,则结果为9
tp=9;
printf("%d\n",tp);
}
}
return 0;
}
有什么问题,欢迎一起讨论哦,一起学习!
- nyoj 485 A*B的问题
- NYOJ-1 A+B问题
- NYOJ 485 A*B Problem
- nyoj-485-A*B Problem
- nyoj 485 A*B Problem
- NYOJ 485 A*B Problem
- NYOJ--485 A*B Problem
- NYOJ 485 A*B Problem
- NYOJ A*B Problem 南工485
- NYOJ 题目485 A*B Problem
- NYOJ A : 和的问题
- NYOJ - A*B Problem
- NYOJ - A-B Problem
- NYOJ A*B
- NYoj A*B Problem
- nyoj 1228 A+B
- NYOJ-A^B Problem
- NYOJ-A/B Problem
- JaEE问题之Tomcat配置成功,但是无法访问localhost
- Inent与Activity
- 程序设计基石与实践系列之成为一名Top的C语言程序员
- hdu 5492 Find a path(dp)
- 面向对象思想和面向对象设计原则之间的关系
- nyoj 485 A*B的问题
- 在Mac下安装XAMPP+在Mac下安装Wordpress
- 编译kbengine_ogre_demo-master(三)
- hdu 5493 Queue(线段树)
- Java中的委托模式
- Linux学习笔记(2)
- Android控件:ScrollView的使用,滑动到底部的监听
- OpenGL教程翻译 第二十三课 阴影贴图(一)
- 网页常用JavaScript代码