Educational codeforces round 83 div2C(类似进制转换,等比数列又一个性质)
C. Adding Powers
原题目地址
题意:
给你一个目标数组,要你 对一个所有元素从0开始的数组 进行一种操作。
- 每一步可以对一个元素增加 k^i ( i 为每一步)( i 可以为0)
- 或者第 i 步不进行操作
思路(贪心):
既然每一步的元素只能用一次,或者不用,而又是k次幂。
所以对最大一个考察时,应该满足一个条件:
- 最大的元素只能由比它小的 k次幂来构成
(等比数列第n项和前n-1项和有一个关系:
sum(n-1)< k^n,我做的时候想到这个结论,不过没用上qwq)
————————————————————————————————————————————————————————
所以可以贪心的把每个元素分解为 k的n次幂:
分解方法除k取余(除k取得余数即是一个: k^n, 并标记是否用过)(与2进制的除2取余相似)————————————————————————————————————————————————————————
反思
- 在求一个数由k^n构成时,要想到模拟进制转换中的除k取余。
- k进制每一位下的1—代表10进制下k^n次幂
AC(咩哥代码)
#include <iostream>
#include <cstring>
#define mst(x,a) memset(x,a,sizeof(x))
#define For(i,x,y) for(int i=(x); i<=(y); i++)
using namespace std;
typedef long long ll;
ll vis[110];
const ll INF=1e16;
int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;cin>>t;while(t--){mst(vis,0);ll n,k;cin>>n>>k;int flag=1;For(i,1,n){ll a;cin>>a;for(int j=0; a&&j<=100; j++){vis[j]+=a%k;a/=k;}}For(i,0,100){if(vis[i]>1){flag=0;break;}}if(flag)cout<<"YES"<<endl;else cout<<"NO"<<endl;}return 0;
}
Educational codeforces round 83 div2C(类似进制转换,等比数列又一个性质)相关推荐
- 进制转换 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
进制转换 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示. import java.util.Scanner; public class Main {public static void ...
- Codeforces 552C Vanya and Scales(进制转换+思维)
题目链接:http://codeforces.com/problemset/problem/552/C 题目大意: 有101个砝码重量为w^0,w^1,....,w^100和一个重量为m的物体,问能否 ...
- Codefoece Educational Codeforces Round 83 (Rated for Div. 2)题解,(ABCDE)
比赛链接 A题: 思路:签到题. 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; const ...
- 进制转换:输入一个十进制整数转换为十六进制。
public static String decToHex(int n){String r="";//定义一个空字符串while (n>=16){int yushu=n%16 ...
- 从零学起-----通识篇01 进制转换
目录 一.目标 二.学习说明背景 三.学习内容 1.进制定义 2.各进制间的转换方法 2.1 二进制转其他进制 2.2 十进制转其他进制 2.3 八进制转其他进制 2.4 十六进制转其他进制 2.5 ...
- 题库练习2(随机数去重排序、分割字符串、进制转换)
1. 随机数去重排序 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉 ...
- python内置函数bin,Python内置函数bin() oct()等实现进制转换
Python内置函数bin() oct()等实现进制转换 使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: ...
- [NOIP2000]进制转换
链接:登录-专业IT笔试面试备考平台_牛客网 来源:牛客网 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的值减1为指数,以10为底数的幂之和的形式.例如:123可 ...
- Java 基础 —— 进制转换
文章目录 Java 基础 -- 进制转换 简介 转换说明 10进制转换Demo 算法转换 R进制转进制 扩展:统计输入整数二进制有多少个"1" 需求 扩展:进制转换(输入一个十六进 ...
最新文章
- js循环动态绑定带参数函数遇到的问题及解决方案[转]
- 身份证校验程序(上)- 零基础入门学习Delphi48
- php和python性能-python、node、php、go、java性能对比测试
- PCB相关的基础知识
- Android在Service中显示Dialog
- 数据结构学习一:概述
- Git——创建版本库【git init】
- Linux 运维必备的13款实用工具,拿好了~
- jxls遍历list时使用模板的批注语法
- ad18常用快捷键可以修改吗_AD18快捷键
- 用大数据文本挖掘来看“共享单车”的行业现状及走势
- 通过excel生成不同dimens文件来实现安卓屏幕适配
- WINDOWS系统“资源管理器”进程选项关闭之后的解决方法
- 华为笔记本在linux下越狱苹果设备(2022.2.27更新)
- 国内优秀的IC设计公司主要分布在哪些城市?
- 无人驾驶(三)---teleop_twist_keyboard控制底盘运动
- 浅谈语音测试方案(一)
- java根据指定的日期获取前七天
- 传统安防实体店如何成功转型
- VBScript的好处