首页 > 其他分享 >P8723 [蓝桥杯 2020 省 AB3] 乘法表

P8723 [蓝桥杯 2020 省 AB3] 乘法表

时间:2023-01-15 18:46:15浏览次数:47  
标签:10 进制 int P8723 蓝桥 num printf 乘法表

题目描述

九九乘法表是学习乘法时必须要掌握的。在不同进制数下,需要不同的乘法表。

例如, 四进制下的乘法表如下所示:

1*1=1
2*1=2 2*2=10
3*1=3 3*2=12 3*3=21

请注意,乘法表中两个数相乘的顺序必须为样例中所示的顺序,不能随意交换两个乘数。

给定 P,请输出 P 进制下的乘法表。

输入格式

输入一个整数 P。

输出格式

输出 PP 进制下的乘法表。PP 进制中大于等于 1010 的数字用大写字母 ABC、⋯ 表示。

 

 

 思路

可以由十进制转任何进制入手,根据连除法将十进制转化为任何进制,连除法即被除数处于进制p余数为进制的n位上的数(n=p^i,i∈[0,+∞],i∈z),分两种情况当进制<10时和进制>=10,一种输出整型一种输出字符型。

代码

 1 #include <stdio.h>
 2 void jinzhi(int,int);
 3 void jinzhizimu(int,int);
 4 int main(){
 5     int p;
 6     int i,j;
 7     scanf("%d",&p);
 8     for(i=1;i<p;i++){
 9         for(j=1;j<=i;j++){
10             if(p<=9){
11             printf("%d*%d=",i,j);
12             jinzhi(i*j,p);
13         }
14             else {
15                 if(i>=10&&j<=9){
16                     printf("%c*%d=",'A'+i-10,j);
17                 }else if(i>=10&&j>=10){
18                     printf("%c*%c=",'A'+i-10,'A'+j-10);
19                 }else{
20                     printf("%d*%d=",i,j);
21                 }
22                 jinzhizimu(i*j,p);
23                 
24             }
25             if(j!=i)printf(" ");
26             else printf("\n");
27         }
28     }
29     return 0;
30 }
31 
32 void jinzhi(int x,int p){    //连除法
33     int a[100];  
34     int num=0;
35     int i;
36     do{
37         a[num++]=x%p;
38         x=x/p;
39     }while(x!=0); 
40     
41     for( i=num-1;i>=0;i--){
42         printf("%d",a[i]);
43     }
44 } 
45 
46 void jinzhizimu(int x,int p){    //与前面一种类似不过要进行转化(int->char)
47     char a[100];  
48     int sum;
49     char c;
50     int num=0;
51     int i;
52     do{
53         sum=x%p;
54         if(sum>=10){
55             a[num++]=('A'+sum-10);   //大于10转化为A--E;
56         }else{
57             a[num++]='0'+sum;       //小于10转化为字符型0--9;
58         }
59         x=x/p;
60     }while(x!=0); 
61     for( i=num-1;i>=0;i--){
62         printf("%c",a[i]);
63     }
64 }

 

标签:10,进制,int,P8723,蓝桥,num,printf,乘法表
From: https://www.cnblogs.com/Amon01/p/17053908.html

相关文章

  • P8716 [蓝桥杯 2020 省 AB2] 回文日期
    题目描述2020年春节期间,有一个特殊的日期引起了大家的注意:2020年2月2日。因为如果将这个日期按 yyyymmdd 的格式写成一个 88 位数是 20200202,恰好是一个回文......
  • 蓝桥杯学习
    1,九进制转换成十进制做错题了,但是也是简单的签到题, importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){......
  • 蓝桥杯 X进制减法
    题目描述进制规定了数字在数位上逢几进一。X进制是一种很神奇的进制,因为其每一数位的进制并不固定!例如说某种X进制数,最低数位为二进制,第二数位为十进制,第三数位为......
  • 打印乘法表(自定义函数)
    #include<stdio.h>voidchengfabiao(intn)//因为这个函数我不需要它返回给主函数值,因此用void{inti=1;for(i=1;i<=n;i++){intk=1;for(k=1;k<=n;k+......
  • 2014蓝桥
    中国古代文献中,曾记载过“大衍数列”,主要用于解释中国传统文化中的太极衍生原理。它的前几项是:0、2、4、8、12、18、24、32、40、50...其规律是:对偶数项,是序号平方再......
  • 蓝桥杯 修剪灌木
    题目描述爱丽丝要完成一项修剪灌木的工作。有N棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晚会修剪一棵灌木,让灌木的高度变为0厘米。爱丽丝修剪灌木的顺序是从......
  • 第12届蓝桥杯JavaB组省赛
    第12届蓝桥杯JavaB组省赛前言用时及分数自测开始时间:\(2023年1月11日16:00\)自测结束时间:\(2023年1月11日18:05\)自测用时:约\(2\)小时最终得分:\(20(35)\)PS:此处......
  • 蓝桥杯-交换瓶子
    交换瓶子(第七届蓝桥杯省赛JAVAA组)有N个瓶子,编号1∼N,放在架子上。比如有5个瓶子:21354要求每次拿起2个瓶子,交换它们的位置。经过若干次后,使得瓶子的序......
  • 蓝桥杯 刷题统计
    题目描述小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做a道题目,周六和周日每天做b道题目。请你帮小明计算,按照计划他将在第几天实现做题数......
  • P8683 [蓝桥杯 2019 省 B] 后缀表达式
    题目描述给定 NN 个加号、 MM 个减号以及 N+M+1N+M+1 个整数 A_1,A_2,\cdots,A_{N+M+1}A1​,A2​,⋯,AN+M+1​,小明想知道在所有由这 NN 个加号、 MM 个减号以......