HDU Sky数 2079 简单易懂的代码

题目

http://acm.hdu.edu.cn/showproblem.php?pid=2097

思路

既然要求和 十进制数字各个位数上的和是相同的, 那么16,12进制转换完之后也是10进制表示的

#include <iostream>
#include <queue>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <stack>
using namespace std;
#define maxn 15000int Sky(int n,int k)
{
    int num = 0;
    while(n)
    {
        num += n%k;
        n /= k;
    }
    return num;
}
int main()
{
    int n;
    while(cin >> n, n)
    {
        int a = Sky(n,10);
        int b = Sky(n,12);
        int c = Sky(n,16);
        if(a == b && b == c)
            printf("%d is a Sky Number.\n",n);
        else
            printf("%d is not a Sky Number.\n",n);
    }
    return 0;
}
时间: 2024-10-09 10:43:02

HDU Sky数 2079 简单易懂的代码的相关文章

HDU Sky数 2097

解题思路:类比求出10进制数各个位上的数字之和,求出12进制和16进制上的数. 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 int n; 6 7 int getShi(int t) 8 { 9 int ans = 0; 10 t = n; 11 while(t) 12 { 13 ans += t%10; //草稿纸上演示一下就知道原理. 14

hdu2097 nyoj414 sky数 (进制转换)

Sky number 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 key天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22.key非常喜欢这种四位数(三种进制的和相等),由于他的发现,所以这里我们命名其为key数.但是要判断这样的数还是有点麻烦啊,那么现在请你帮忙来判断任何一个十进

hdu 2084 数塔 dp 动态规划

开始动态规划的学习了,先是比较基础的,很金典的数塔.附上题目链接  http://acm.hdu.edu.cn/showproblem.php?pid=2084 这题的状态转移方程是  dp[i][j] = max(dp[i-1][j-1],dp[i-1][j]) + m[i][j]; (dp[i][j] 表示在第 i 层 第 j 列时的最大和) . 然后一个双重循环,边能算出.当然可以用滚动数组.但是注意用滚动数组解题时,第二层循环 j 必须从大到小, 因为 状态转移方程 为  f  [ j

HDU 2084 数塔 --- 入门DP

HDU 2084 数塔 从下往上递推,状态转移方程 dp[i][j] = max( dp[i+1][j], dp[i+1][j+1]) + a[i][j]; /* HDU 2084 数塔 --- 入门DP */ #include <cstdio> const int N = 105; int dp[N][N]; int MAX(int a, int b){ return a > b ? a : b; } int main() { #ifdef _LOCAL freopen("D

回文数的实现代码

回文数,顾名思义,就是一种数,正序逆向读取完全一致.像12321,4567654就是回文数. 用C语言实现回文数的判断呢,很简单.在这呢,我做简单的介绍. 首先,用判断语句实现.判断语句呢,就是通过循环和简单的运算符,找出该数的逆向读取的数据,于本身进行比较便得到了. 代码如下: #include<stdio.h> void main() { int num; scanf("%d",&num); int min = 0, max = num; while (max

HDU 2048 数塔(DP)

数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 20786    Accepted Submission(s): 12486 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少

Sky数

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 16448    Accepted Submission(s): 9444 Problem Description Sky从小喜欢奇特的东西,并且天生对数字特别敏感.一次偶然的机会,他发现了一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进

HDU2097 Sky数

问题链接:HDU2097 Sky数.入门练习题,用C语言编写程序. 进制转换问题,通常用除运算(/)和取余数运算(%)来实现. 程序中,使用数组scale[]是为了提高程序的通用性.改变该数组的内容,就可以改变程序的功能,而不需要修改程序. AC的C语言程序如下: /* HDU2097 Sky数 */ #include <stdio.h> // 数字之和:将10进制的val转为base进制,并对各位求和 int digitsum(int val, int base) { int sum = 0

hdu 3934&amp;&amp;poj 2079 (凸包+旋转卡壳+求最大三角形面积)

链接:http://poj.org/problem?id=2079 Triangle Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 8173   Accepted: 2423 Description Given n distinct points on a plane, your task is to find the triangle that have the maximum area, whose vertices