码迷,mamicode.com
首页 > 其他好文 > 详细

HDU6156 Palindrome Function

时间:2017-08-20 12:23:44      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:push   bre   ace   c++   div   space   i++   rom   bug   

题意:输入L,R,l,r求[L,R]范围内在[l, r]进制下的回文数(2<=l<=r<=26, L<=R<1e9)

题解:主要是求回文数,枚举每个进制,求ans = R前面的回文数-L前面的回文数,可以发现每个进制下小于1e9的回文数比较少,直接把所有的回文数预处理排序二分就可以

#include <bits/stdc++.h>
#define ll long long
#define maxn 100100
#define BUG(x, n) for(ll i=0;i<=n;i++) cout<<x[i]<<" ";cout<<endl;
using namespace std;
ll temp[100];
vector<ll >vec[40];
ll mmp(ll x,ll t,ll k){
    ll num=0, ans = 0;
    while(x){
        temp[++num] = x%t;
        x /= t;
    }
    for(ll i=num;i>=1;i--) ans = ans*t+temp[i];
    if(k!=-1) ans = ans*t+k;
    for(ll i=1;i<=num;i++) ans = ans*t+temp[i];
    return ans;
}
void init(){
    ll t1 = 0;
    for(ll i=2;i<=36;i++)
        for(ll j=0;j<i;j++)
            vec[i].push_back(j);
    for(ll j=2;j<=36;j++){
        ll i = 1;
        while(1){
            t1 = mmp(i, j, -1);
            if(t1>1e9) break;
            vec[j].push_back(t1);
        }
    }
    for(ll j=2;j<=36;j++)
        for(ll k=0;k<j;k++){
        ll i = 1;
        while(1){
            t1 = mmp(i, j, -1);
            if(t1>1e9) break;
            vec[j].push_back(t1);
        }
    }
    for(ll i=2;i<=36;i++) sort(vec[i].begin(), vec[i].end());
}
int main(){
    init();
    ll T, L, R, l, r, ans, RR, LL, num = 1;
    scanf("%lld", &T);
    while(T--){
        ans = 0;
        scanf("%lld%lld%lld%lld", &L, &R, &l, &r);
        for(ll i=l;i<=r;i++){
            RR = upper_bound(vec[i].begin(), vec[i].end(), R)-vec[i].begin();
            LL = upper_bound(vec[i].begin(), vec[i].end(), L-1)-vec[i].begin();
            ans += (RR-LL)*(i-1)+(R-L+1);
        }
        printf("Case #%lld: %lld\n", num++, ans);
    }
    return 0;
}

 

HDU6156 Palindrome Function

标签:push   bre   ace   c++   div   space   i++   rom   bug   

原文地址:http://www.cnblogs.com/Noevon/p/7399284.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!