504.七进制数
504.1 题目
给定一个整数 num
,将其转化为 7 进制,并以字符串形式输出。
示例 1:
输入: num = 100
输出: "202"
示例 2:
输入: num = -7
输出: "-10"
提示:
-10^7 <= num <= 10^7
504.2 题解
递归法
// 方法一:递归法
// 取余再递归传入除7的值
static string ConvertToBase71(int num)
{
// 递归基,当 num 的绝对值小于 7 时,返回其字符串形式
if (Math.Abs(num) < 7)
{
return num.ToString();
}
// 递归调用,将商部分递归转化为 7 进制,并将余数添加到字符串中
return ConvertToBase71(num / 7) + Math.Abs(num % 7).ToString();
}
迭代法
// 方法二:迭代法
// 循环计算商和余数,将余数添加到 StringBuilder 中
static string ConvertToBase72(int num)
{
// 处理特殊情况,当 num 为 0 时直接返回 "0"
if (num == 0)
{
return "0";
}
// 使用 StringBuilder 存储结果
System.Text.StringBuilder result = new System.Text.StringBuilder();
// 处理负数情况,添加负号并取绝对值
bool isNegative = num < 0;
if (isNegative)
{
num = Math.Abs(num);
}
// 迭代计算商和余数,将余数添加到 StringBuilder 中
while (num > 0)
{
int remainder = num % 7;
result.Insert(0, remainder.ToString()); // 在 StringBuilder 的开头插入余数
num /= 7;
}
// 如果是负数,插入负号
if (isNegative)
{
result.Insert(0, "-");
}
return result.ToString();
}
504.3 代码
using System;
using System.Text;
class Program
{
static void Main()
{
#region 题目
// 给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。
// 示例 1:
// 输入: num = 100
// 输出: "202"
// 示例 2:
// 输入: num = -7
// 输出: "-10"
// 提示:-107 <= num <= 107
#endregion
#region 测试
// 示例 1
int num1 = 100;
string result1_1 = ConvertToBase71(num1);
Console.WriteLine($"示例1 方法1 输出:{result1_1}");
string result1_2 = ConvertToBase72(num1);
Console.WriteLine($"示例1 方法2 输出:{result1_2}");
// 示例 2
int num2 = -7;
string result2_1 = ConvertToBase71(num2);
Console.WriteLine($"示例2 方法1 输出:{result2_1}");
string result2_2 = ConvertToBase72(num2);
Console.WriteLine($"示例2 方法2 输出:{result2_2}");
#endregion
}
#region 答案
// 方法一:递归法
// 取余再递归传入除7的值
static string ConvertToBase71(int num)
{
// 递归基,当 num 的绝对值小于 7 时,返回其字符串形式
if (Math.Abs(num) < 7)
{
return num.ToString();
}
// 递归调用,将商部分递归转化为 7 进制,并将余数添加到字符串中
return ConvertToBase71(num / 7) + Math.Abs(num % 7).ToString();
}
// 方法二:迭代法
// 循环计算商和余数,将余数添加到 StringBuilder 中
static string ConvertToBase72(int num)
{
// 处理特殊情况,当 num 为 0 时直接返回 "0"
if (num == 0)
{
return "0";
}
// 使用 StringBuilder 存储结果
System.Text.StringBuilder result = new System.Text.StringBuilder();
// 处理负数情况,添加负号并取绝对值
bool isNegative = num < 0;
if (isNegative)
{
num = Math.Abs(num);
}
// 迭代计算商和余数,将余数添加到 StringBuilder 中
while (num > 0)
{
int remainder = num % 7;
result.Insert(0, remainder.ToString()); // 在 StringBuilder 的开头插入余数
num /= 7;
}
// 如果是负数,插入负号
if (isNegative)
{
result.Insert(0, "-");
}
return result.ToString();
}
#endregion
}
504.4 运行结果
示例1 方法1 输出:202
示例1 方法2 输出:202
示例2 方法1 输出:-10
示例2 方法2 输出:-10
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com