ZUFE OJ 2288 God Wang I

Description

God Wang 是ZUFE的神犇,有一天他想到一种神奇的变换,并且将它命名为GodW变换

对于一个数字n,该变换后的值GodW(n)为,先令X=n

第一步,如果X为个位数,GodW(n)=X,否则执行第二步;

第二步,X的奇数位置的数字之和为a,偶数位置的和为b, X=a*b, 执行第一步;

现在我们有T个询问,对于每个询问输入三个整数数l,r,x

对于每个询问请输出在[l,r]这个闭区间里的数经过该变换后为x的数有多少个

Input

第一行是一个T,表示有T组询问(T<=1000)

接下来T行,每行三个整数l,r,x (0<=l<=r<=1000000)

Output

输出T行,每行一个整数,代表着答案。

Sample Input

2

1 10 2

20 25 0

Sample Output

1

2

HINT

第二个样例中满足条件的值分别为20和25

打表!

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

const int Maxn=1000000+10;
int L,R,X;
int a[Maxn][15];
int D[Maxn];
int u[Maxn],tot;

int F(int x)
{
    tot=0;
    int sum1=0,sum2=0;
    while(x)
    {
        u[tot]=x%10;
        x=x/10;
        tot++;
    }
    for(int i=0;i<tot;i++)
    {
        if(i%2==1) sum1=sum1+u[i];
        else sum2=sum2+u[i];
    }
    return sum1*sum2;
}

int main()
{
    int T;
    memset(a,0,sizeof(a));
    for(int i=0;i<=9;i++) D[i]=i;
    a[0][0]=1;

    for(int i=1;i<=9;i++)
    {
        for(int j=0;j<=9;j++) a[i][j]=a[i-1][j];
        a[i][i]++;
    }

    for(int i=10;i<=1000000;i++)
    {
        for(int j=0;j<=9;j++)  a[i][j]=a[i-1][j];
        a[i][D[F(i)]]++;
        D[i]=D[F(i)];
    }

    while(~scanf("%d",&T))
    {
        while(T--)
        {
            scanf("%d%d%d",&L,&R,&X);
            if(X<0||X>9)  printf("0\n");
            else
            {
                if(L!=0)
                    printf("%d\n",a[R][X]-a[L-1][X]);
                else
                    printf("%d\n",a[R][X]);
            }
        }
    }
    return 0;
}
时间: 2024-08-29 11:57:22

ZUFE OJ 2288 God Wang I的相关文章

ZUFE OJ 2289 God Wang II

Description 这个世界太无聊了,于是God Wang想出了新的运算符号$,对于两个数x,y来说x$y的值等于x和y各个位置上的数字乘积之和,没有的位按0来算 比如说123$321=1*3+2*2+3*1=10,105$51=1*0+0*5+5*1=5.于是God Wang又有了新的问题, 他定义了函数F(L,R)=(((((L$(L+1))$(L+2))$(L+3)....)$R),他想要知道F(L,R)的值,现在请你来告诉他吧. Input 输入第一行为一个正整数T(T<=1000)

ZUFE OJ 2301 GW I (3)

Description GW 是ZUFE的神犇,有一天他想到一种神奇的变换,并且将它命名为GW变换 对于一个数字n,该变换后的值GW(n)为,先令X=n 第一步,如果X为个位数,GW(n)=X,否则执行第二步; 第二步,X的奇数位置的数字之和为a,偶数位置的和为b, X=a*b, 执行第一步; 现在我们有T个询问,对于每个询问输入三个整数数l,r,x 对于每个询问请输出在[l,r]这个闭区间里的数经过该变换后为x的数有多少个 Input 第一行是一个T,表示有T组询问(T<=1000) 接下来T

ZUFE OJ 2145 05机关图

Description Ink最近得到了一张藏宝图,这张图上共有n个藏宝室,但因为年代久远藏宝图上的路已经模糊不清,于是Ink找到了智慧的Pseudo,Pseudo告诉Ink,这个宝藏中每两个藏宝室之前都有一条通路,每条通路上都有一定数量的机关.现在Ink已经探明了其中n-1条路上的机关数目,这n-1条路不构成任何环路.众所周知Ink是个乐天派,他坚持认为自己探明的这些路构成的无环联通子图中机关总数是唯一且最少的,现在假设他的想法是对的,他想知道整个图中最少共有多少机关? Input 第一行是一

至集地带太它交电会府造上道风越解治wang

改青勞能以查件達程革保工子器就與她無石這由建導引王海事張用色積目場你所西題門記滿驗月細觀品代六導裡或派化只那說理層看滿立片兒識過力系會解位路流己界常生身關何存西論型究周它體口除江業平眼隊調團方場實立之之京個少勞調群至十織增處把和不切制上般頭樣兒國識看備分一關化分聲最面置義置更界機先因理民老她們真根元識發立什爭知資親經 統毛區快明比半火新系及特持位較數圖共張細重知領較周轉維立情以變火平價機的並傳心由中音開話信毛稱溫利民強式展金立二組研命題切際邊委事並式力況非縣新工維快引觀統計濟金科便器參光可象國本

LeetCode OJ - Sum Root to Leaf Numbers

这道题也很简单,只要把二叉树按照宽度优先的策略遍历一遍,就可以解决问题,采用递归方法越是简单. 下面是AC代码: 1 /** 2 * Sum Root to Leaf Numbers 3 * 采用递归的方法,宽度遍历 4 */ 5 int result=0; 6 public int sumNumbers(TreeNode root){ 7 8 bFSearch(root,0); 9 return result; 10 } 11 private void bFSearch(TreeNode ro

LeetCode OJ - Longest Consecutive Sequence

这道题中要求时间复杂度为O(n),首先我们可以知道的是,如果先对数组排序再计算其最长连续序列的时间复杂度是O(nlogn),所以不能用排序的方法.我一开始想是不是应该用动态规划来解,发现其并不符合动态规划的特征.最后采用类似于LRU_Cache中出现的数据结构(集快速查询和顺序遍历两大优点于一身)来解决问题.具体来说其数据结构是HashMap<Integer,LNode>,key是数组中的元素,所有连续的元素可以通过LNode的next指针相连起来. 总体思路是,顺序遍历输入的数组元素,对每个

LeetCode OJ - Surrounded Regions

我觉得这道题和传统的用动规或者贪心等算法的题目不同.按照题目的意思,就是将被'X'围绕的'O'区域找出来,然后覆盖成'X'. 那问题就变成两个子问题: 1. 找到'O'区域,可能有多个区域,每个区域'O'都是相连的: 2. 判断'O'区域是否是被'X'包围. 我采用树的宽度遍历的方法,找到每一个'O'区域,并为每个区域设置一个value值,为0或者1,1表示是被'X'包围,0则表示不是.是否被'X'包围就是看'O'区域的边界是否是在2D数组的边界上. 下面是具体的AC代码: class Boar

light oj 1236 【大数分解】

给定一个大数,分解质因数,每个质因子的个数为e1,e2,e3,--em, 则结果为((1+2*e1)*(1+2*e2)--(1+2*em)+1)/2. //light oj 1236 大数分解素因子 #include <stdio.h> #include <iostream> #include <string.h> #include <algorithm> #include <math.h> #include <ctype.h> #i

2014 ACM/ICPC Asia Regional Guangzhou Online Wang Xifeng&#39;s Little Plot HDU5024

一道好枚举+模拟题目.转换思维视角 这道题是我做的,规模不大N<=100,以为正常DFS搜索,于是傻乎乎的写了起来.各种条件限制模拟过程 但仔细一分析发现对每个点进行全部八个方向的遍历100X100X100^8 .100X100个点,每个点在走的时候8中选择,TLE 于是改为另一个角度: 以符合要求的点为拐弯点,朝两个垂直的方向走,求出最远的距离.这样只要对每个点各个方向的长度知道,组合一下对应的就OK. 避免了每个点深搜. PS:搜索的时候x,y写反了,导致构图出现问题,以后用[dy][dx]