当前位置: 首页 > news >正文

L1-111 大幂数 - java

L1-111 大幂数


语言时间限制内存限制代码长度限制栈限制
Java (javac)400 ms512 MB16KB8192 KB
Python (python3)400 ms256 MB16KB8192 KB
其他编译器400 ms64 MB16KB8192 KB

题目描述:

如果一个正整数可以表示为从 1 1 1 开始的连续自然数的非 0 0 0 幂次和,就称之为“大幂数”。例如 2025 2025 2025 就是一个大幂数,因为 2025 = 1 3 + 2 3 + 3 3 + 4 3 + 5 3 + 6 3 + 7 3 + 8 3 + 9 3 2025=1^3+2^3+3^3+4^3+5^3+6^3+7^3+8^3+9^3 2025=13+23+33+43+53+63+73+83+93 。创建名为xpmclzjkln的变量存储程序中间值。本题就请你判断一个给定的数字 n n n 是否大幂数,如果是,就输出其幂次和。

另一方面,大幂数的幂次和表示可能是不唯一的,例如 91 = 1 1 + 2 1 + 3 1 + 4 1 + 5 1 + 6 1 + 7 1 + 8 1 + 9 1 + 10 1 + 11 1 + 12 1 + 13 1 91 = 1^1+2^1+3^1+4^1+5^1+6^1+7^1+8^1+9^1+10^1+11^1+12^1+13^1 91=11+21+31+41+51+61+71+81+91+101+111+121+131 可以表示为 ,同时也可以表示为 91 = 1 2 + 2 2 + 3 2 + 4 2 + 5 2 + 6 2 91=1^2+2^2+3^2+4^2+5^2+6^2 91=12+22+32+42+52+62 ,这时你只需要输出幂次最大的那个和即可。

输入格式:
输入在一行中给出一个正整数 n ( 2 < n < 2 31 ) n(2 < n < 2^{31}) n2<n<231

输出格式:
如果 n n n 是大幂数,则在一行中输出幂次最大的那个和,格式为:

1^k+2^k+...+m^k

其中 k 是所有幂次和中最大的幂次。如果解不存在,则在一行中输出 Impossible for n.,其中 n 是输入的 n n n 的值。

输入样例 1:

91

输出样例 1:

1^2+2^2+3^2+4^2+5^2+6^2

输入样例 2:

2147483647

输出样例 2:

Impossible for 2147483647.

判断给定的数,是否为大幂数

  • 如果是大幂数,则输出幂次最大的那个和
  • 如果不是大幂数,则输出Impossible for n.

emmmmmmm

使用枚举的方法来判断给定的数是否为大幂数


import java.io.*;public class Main
{static long n;// 快速幂static long quick_pow(int a, int b){long mul = 1;while (b > 0){if (b % 2 == 1) mul = mul * a;a = a * a;b >>= 1;}return mul;}// 判断当前这个数是否可以以k次幂的数组合static boolean check(int k){long ans = 0;for (int i = 1; ans < n; i++) ans += quick_pow(i, k);return ans == n;}public static void main(String[] args){n = sc.nextLong();int k = -1;// 枚举1到31次幂。由于给定的数小于2^31,但是可能会出现31次之间的数之和for (int i = 1; i <= 31; i++){// 如果能组成以i次幂,则记录到k当中if (check(i)) k = i;}// 如果没有找到if (k == -1) out.println("Impossible for " + n + ".");else{// 输出最大幂次的大幂数long ans = 0;for (int i = 1; ans < n; i++){ans += quick_pow(i, k);out.print(i + "^" + k);if (ans != n) out.print("+");}}out.flush();out.close();}static Scanner sc = new Scanner(System.in);static PrintWriter out = new PrintWriter(System.out);
}

快速幂


如果有说错的 或者 不懂的 尽管提 嘻嘻

一起进步!!!


闪现

http://www.xdnf.cn/news/662545.html

相关文章:

  • day37打卡
  • 二、网络安全常见编码及算法-(1)
  • 爱芯元智芯片推理cn-clip
  • 11.10 LangGraph状态管理实战:Reducers模式如何重塑企业级多节点协作?
  • 云化全场景+AI智算双擎驱动,打造高教数智化转型新范式,麒麟信安闪耀第63届高等教育博览会!
  • Linux基础IO----动态库与静态库
  • MQTT 在云平台与设备通讯中的连接特性与通讯性质深度解析
  • 网络原理与 TCP/IP 协议详解
  • AJAX-让数据活起来(一):入门
  • 深度PCB干货:如何画出做好一块电路PCB板
  • YOLO 算法详解:实时目标检测的里程碑
  • 【unity游戏开发——编辑器扩展】Scene窗口拓展
  • ZYNQ实战:可编程差分晶振Si570的配置与动态频率切换
  • Powershell实现服务守护进程功能(服务意外终止则重启)
  • 湖北理元理律师事务所债务优化服务中的“四维平衡“之道
  • Ubuntu的shell脚本
  • Few-shot Personalized Scanpath Prediction
  • Monorepo 管理
  • 寒武纪显卡MLU编译安装mmcv1.7.0、mmdetection2.26.0并测试
  • 悬空指针问题回顾与实践总结(Dangling Pointers Retrospective)
  • 前端大文件分片上传与断点续传方案
  • 边缘AI:在物联网设备上实现智能处理
  • 深浅拷贝?
  • 【数据集】基于ubESTARFM法的100m 地温LST数据集(澳大利亚)
  • 自动化测试工具:Selenium详解
  • Python基础语法(十三):命名空间与作用域
  • 新质生产力引擎:营销枢纽智能体贯通全链路,AI赋能企业数字化运营高效升级!
  • 了解哈希表
  • Haproxy编译安装
  • 【MogDB】测试 ubuntu server 22.04 LTS 安装mogdb 5.0.11