2266: number(灵性数位dp)

2266: number

时间限制: 1 Sec  内存限制: 128 MB
提交: 56  解决: 20
[ 提交][ 状态][ 讨论版][命题人: admin]

题目描述

某人刚学习了数位DP,他在某天忽然思考如下问题:

给定n,问有多少数对<x, y>满足:

x, y∈[1, n], x < y

           x, y中出现的[0, 9]的数码种类相同

输入

一个整数n (n <= 107)

输出

输出一个数即答案

样例输入

30

样例输出

3

提示

<1, 11> <2, 22> <12, 21>

#include <iostream>
#include <algorithm>
#include <cstring>

using namespace std ;

#define LL long long
int n ;
int times[1 << 10] ;
int b , s ;
LL result ;
// 注意result开longlong要不会爆炸

int main()
{

    cin >> n ;

    result = 0 ;
    memset(times , 0 , sizeof(times)) ;

    for(int i = 1 ; i <= n ; i++)
    {
        /*
        对从1到n的每个数字,分离每个数位上的数字,
        然后将1向左移动相应的位数,相同的数字移动的位置相同
        使用相同的数字组成的数,的s值是相同的
        而且s值每出现一次,都会出现前面s出现次数的数对对数
        */
        s = 0 ;
        int x = i ;
        while(x)
        {
            b = x % 10 ;
            x /= 10 ;
            s = s | (1 << b) ;
        }
        result += times[s] ;
        times[s] ++ ;
    }


    cout << result << endl ;

    return 0 ;
}

 

转载于:https://www.cnblogs.com/yi-ye-zhi-qiu/p/8910461.html

Numeric数据类型中的number保留小数位数的规则如下: - 如果number的小数位数为正数,则会按照指定的小数位数保留小数。例如,如果定义为NUMBER(11, 4),则保留小数位数为4位,即保留到小数点后的四位数字,并根据四舍五入规则进行舍入。比如,12345.6789会保留为12345.6789。 - 如果number的小数位数为负数,则会将小数位数之前的数字进行舍入。例如,如果定义为NUMBER(11, -2),则小数位数为负2,即要将小数点前的数字保留到百位,百位之后的数字会被舍弃,而且根据四舍五入规则进行舍入。比如,12345.6789会被舍入为12300。 - 如果number的小数位数为0,则只保留整数部分,小数部分会被舍弃。例如,如果定义为NUMBER(11, 0),则只保留整数部分,小数部分会被舍弃。比如,12345.6789会被舍入为12345。 需要注意的是,number数据类型中的小数位数不能小于整数位数,否则会出现错误。比如,NUMBER(5, 2)中的精度太小,无法保留12345.6789这样的数值。 综上所述,Numeric数据类型中的number可以根据指定的小数位数进行小数保留,并且根据四舍五入规则进行舍入。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [json库 number类型解析](https://blog.csdn.net/qq_43213160/article/details/120059326)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [oracle NUMBER(precision,scale) oracle 数值型数字类型详解 oracle 精度,小数位数和四舍五入...](https://blog.csdn.net/iteye_14608/article/details/82166673)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值