判断一个数是否为平方数或者立方数

题目问题很简单的。

判断立方数
for(int j=1;j<sqrt(sum);j++)
		{
			if(j*j*j==sum)
			{
				flag=1;
				break;
			}
		}
判断平方数
a=sqrt(sum);
if(a*a==sum)

有个题目是这样的:
JM新研究出了一种完美数字,他是这样定义的:如果一个数字xx的数位之和sumsum是一个平方数或者立方数,且xx的数位中没有出现数字2,42,4,则称xx为完美数字。

前1010个完美数字为:1,8,9,10,13,17,18,31,35,361,8,9,10,13,17,18,31,35,36

请你帮JM统计一下,[1,141516][1,141516]中有多少个这样的完美数字。

听着就很简单!!但脑子一热,想到要用字符数组高精度算,觉得很难了!!!第二天脑袋一亮就想到了!实在简单的一批!

#include<iostream>
#include<cmath> 
using namespace std;



int main()
{
	int c=0;
	for(int i=1;i<=141516;i++)
	{
		int sum=0;
		int a=0;
		int n=i;
			while(n)
		{
		a=n%10;
		n=n/10;
		sum=sum+a;
		if(a==2||a==4)
		{
			sum=0;break;
		}
		}
		if(sum)
		{
			
			int a,b;
			a=sqrt(sum);
			int flag=0;
			for(int j=1;j<sqrt(sum);j++)
			{
				if(j*j*j==sum)
				{
					flag=1;
					break;
				}
			}
			if(a*a==sum||flag)
			c++;
		}
	}
	cout<<c;
 	return 0;
}



好的,下面是汇编语言计算给定字的立方值的思路: 1. 获取输入的字,可以通过用户输入或者直接在代码中赋值的方式。 2. 使用乘法指令将该字与自身相乘,得到该字的平方值。 3. 再次使用乘法指令将该平方值与原始字相乘,得到该字的立方值。 4. 将计算得到的立方值输出,可以通过屏幕打印或者将结果存储在寄存器中,再通过调试工具查看。 下面是一个示例代码,可以供您参考: ``` .model small .stack 100h .data num dw 5 ; 定义字变量为5 .code main proc mov ax, @data ; 初始化据段寄存器 mov ds, ax mov ax, num ; 将字变量载入累加器 mul ax ; 计算字的平方值 mov bx, ax ; 将平方值存储在寄存器中 mov ax, num ; 将字变量再次载入累加器 mul bx ; 计算字的立方值 mov cx, ax ; 将立方值存储在寄存器中 mov ah, 09h ; 设置输出字符串函 lea dx, prompt ; 将提示信息存储到DX寄存器中 int 21h ; 调用中断显示提示信息 mov ax, cx ; 将立方值载入累加器 call print_hex ; 调用打印HEX格式函 mov ah, 4ch ; 设置终止程序中断 int 21h ; 调用中断终止程序 print_hex proc push bx ; 保存BX寄存器 push ax ; 保存AX寄存器 mov bx, 10 ; 将10存储在BX寄存器中 xor cx, cx ; 将CX寄存器清零 print_hex_loop: xor dx, dx ; 将DX寄存器清零 div bx ; 计算AX除以BX的商和余,商存储在AL中,余存储在AH中 push dx ; 将余存储在栈中 inc cx ; CX寄存器加1,用于记录位 test ax, ax ; 判断是否为0 jnz print_hex_loop ; 如果不为0,则继续循环 print_hex_print: pop dx ; 弹出栈顶元素,即余 add dl, 30h ; 将余转换为ASCII码 cmp dl, 3ah ; 判断是否大于9 jl print_hex_char ; 如果不大于9,则直接打印 add dl, 7 ; 如果大于9,则加上7,转换为大写字母 print_hex_char: mov ah, 02h ; 设置输出字符函 int 21h ; 调用中断输出字符 loop print_hex_print ; 继续循环,直到所有位都被打印 pop ax ; 恢复AX寄存器 pop bx ; 恢复BX寄存器 ret ; 返回 prompt db "The cube of the number is: ", 0 endp main end main ``` 这个代码的作用是计算字5的立方值,并将结果输出到屏幕上。您可以根据自己的需求修改代码中的字变量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值