题目

小b有一个数n,现在她想把n的每一位重排列,使得得到的结果为2的幂次。

请问小b能得到2的幂次吗?

注意重排列后不允许有前导0。

样例解释:46重排列成64,为2^6。

输入

输入一个数N,其中1≤N≤10^9

输出

满足条件,输出“true”;
不满足,则输出“false”。

输入样例

46

输出样例

true

思路:提前将 2^i 打好表,然后对于数字 n 去分解每一位,再对所有位进行全排列,于表中的数字进行比较即可,要注意的是,由于 n 最大到 1e9,打表需要使用 map

源程序

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#define EPS 1e-9
#define PI acos(-1.0)
#define INF 0x3f3f3f3f
#define LL long long
const int MOD = 1E9+7;
const int N = 4000000+5;
const int dx[] = {0,0,-1,1,-1,-1,1,1};
const int dy[] = {-1,1,0,0,-1,1,-1,1};
using namespace std;int bit[15],tot;
map<int,int> mp;
void init(){for(int i=0; i<31; ++i)mp[1<<i]=1;
}
int main() {init();int n;scanf("%d",&n);while(n) {//分解每一位bit[tot++]=n%10;n/=10;}sort(bit,bit+tot);bool flag=false;do {//对所有位数全排列int sum=0;if(bit[0]==0)continue;for(int i=0; i<tot; ++i)sum=sum*10+bit[i];if(mp[sum]==1) {//逐个判断每一位flag=true;break;}} while(next_permutation(bit,bit+tot));if(flag)puts("true");elseputs("false");return 0;
}

重排列得到2的幂(51Nod-2515)相关推荐

  1. 2022-6-5 括号之价,最长配对,梦中岛之路,小Biu的旅行,最小正子段和,小b和排序,顺子,重排列得到2的幂,重排列,和为K的倍数,低买高卖,小b删列

    1. 括号之价 [栈] 小Y上数据结构课的时候摸鱼,听到老师在讲用栈做括号匹配,于是乎边随意写了一个合法的括号序列.但是光是写括号太无聊了,他现在想知道这个括号序列的价值.他是这样定义一个括号序列的价 ...

  2. 矩阵快速幂 51nod

    基准时间限制:3 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 给出一个N * N的矩阵,其中的元素均为正整数.求这个矩阵的M次方.由于M次方的计算结果太大,只需要输出 ...

  3. 组合数学 —— 排列数

    [概念] 从 n 个元素的集合 S 中,有序的选出 r 个元素,叫做 S 的一个 r 排列,不同的排列总数记作: 或  如果两个排列所含元素不全相同,或所含元素相同但顺序不同,就会被认为是不同的排列. ...

  4. 51nod 算法马拉松18 B 非010串 矩阵快速幂

    51nod 算法马拉松18 B 非010串 矩阵快速幂 非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串 ...

  5. 51nod 1013快速幂 + 费马小定理

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1013 这是一个等比数列,所以先用求和公式,然后和3^(n+1)有关,有n ...

  6. 51Nod 1046 A^B Mod C(日常复习快速幂)

    1046 A^B Mod C 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出3个正整数A B C,求A^B Mod C. 例如,3 5 8,3^5 Mod 8 = ...

  7. 51nod 13831048 整数分解为2的幂 [递推]【数学】

    题目连接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1048 ---------------------------- ...

  8. 51nod 1013【快速幂+逆元】

    等比式子: Sn=(a1-an*q)/(1-q) n很大,搞一发快速幂,除法不适用于取膜,逆元一下(利用费马小定理) 假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p).刚好 ...

  9. 51nod 1513-3的幂的和(费马小定理+快速幂)

    题目: 求:3^0 + 3^1 +...+ 3^(N) mod 1000000007 Input 输入一个数N(0 <= N <= 10^9) Output 输出:计算结果 Sample ...

最新文章

  1. python 爬虫之爬取大街网(思路)
  2. python输出键值列表_Python 键值分组或分区数据
  3. GridView用法详解
  4. 先装XP再装WIN2000双系统无法启动的解决办法
  5. Delphi实现的透明阴影以及蒙版效果菜单
  6. SpringBoot视频教程
  7. Hadoop学习总结:Map-Reduce入门
  8. Linux 如何创建进程函数与查看进程
  9. 怎样理解和识别 Linux 中的文件类型
  10. Jquery中parentsUntil函数调用最容易犯的三个错误
  11. 大数据之路-阅读笔记
  12. 梅花雪MzTreeView2.0 的checkbox完全攻略
  13. 大学生生涯规划1000字计算机专业,计算机大学生职业生涯规划书1000字
  14. 浮动之QQ会员页面导航
  15. python 获取本机IP地址
  16. openlayers地图实现地点标注
  17. 计算机基础知识综合参考书,计算机基础知识综合参考-20210411123539.pdf-原创力文档...
  18. 使用 Oracle Enterprise Manager Cloud Control 12c 安装和管理 Oracle Data Guard
  19. 打开mac系统偏好设置
  20. 做空机构12次围攻下,跟谁学逆势续写高增长神话

热门文章

  1. 在外企和大厂都实习过是一种什么体验?
  2. 99%程序员不知道的编程必备工具,人工智能助你编程更轻松
  3. 趣图:老师讲算法 vs 油管三哥讲算法
  4. 微信开发SDK,Jeewx-Api 1.3.1 版本发布
  5. MiniDao 比Mybatis还灵活实用的J2EE 持久层轻量级解决方案
  6. MNIST手写数字识别【Matlab神经网络工具箱】
  7. 简易的AJAX工具[转]
  8. 移动端(手机端)页面自适应解决方案—rem布局篇
  9. 4-30 HTML 细节摘录
  10. php 卡迪尔的秘密