题目名称 1004. [cnoier] 挖金币游戏
输入输出 gold.in/out
难度等级
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 20
题目来源 GravatarMakazeu 于2012-08-13加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:13, 提交:46, 通过率:28.26%
GravatarMakazeu 100 0.029 s 0.38 MiB C++
Gravatar旺仔小馒头 100 0.033 s 2.60 MiB C++
Gravatar岂是蓬蒿人 100 0.038 s 3.75 MiB C++
Gravatar苏轼 100 0.055 s 0.39 MiB Pascal
Gravatar苏轼 100 0.055 s 0.39 MiB Pascal
GravatarEzoi_XY 100 0.055 s 1.05 MiB C
Gravatar赵寒烨 100 0.375 s 0.93 MiB Pascal
Gravatarlmm 100 2.158 s 82.54 MiB Pascal
Gravatarbhiaibogf 100 2.162 s 82.54 MiB Pascal
Gravatarbhiaibogf 100 2.207 s 83.10 MiB Pascal
关于 挖金币游戏 的近10条评论(全部评论)
做法:
1.用一维读入n,for i:1..n ,直接算 i 的各位数乘积x,使a[x]加1
2.对a[1..n]排序,找到m个不为零的数
3.二重循环i,j:1..m,计算每次a[i]*a[j]的值保存到f[k]中,最后k应等于m*m
4. 对f[k]排序
为什么这样做就可以额?
Gravatar苏轼
2014-10-30 16:38 1楼

1004. [cnoier] 挖金币游戏

★   输入文件:gold.in   输出文件:gold.out   简单对比
时间限制:1 s   内存限制:128 MiB

题目描述

这天,小X 幸运地获得了一次进行挖金币游戏的机会,规则如下:在一个N*N 的矩形里,有N*N 个边长为1 的正方形格子。在游戏中取左下角的格子坐标为(1,1),右上角为(N,N)。在游戏开始前,每一个格子中都会放入一枚金币,而当游戏开始时,每一个格子 中的那一枚金币都会同时进行一次移动,移动后的横、纵坐标值将分别变为原横、纵坐标值每一位上的乘积。当有金币被移动出格子矩形时,将被游戏方收走。小X 将被允许选取M 个格子,他将获得他所选取的格子中所有的金币,而他对游戏中获得的金币数有一个期望值H。他想知道他最多能获得的金币数能否达到他的期望值。不过金币移动 的让人眼花缭乱,小X 算不过来了,他找到了你,希望你能用编程解决这个问题。

输入

一行,三个正整数数N、M、H,以空格隔开,意义如题目中所说。

输出

一个或两个正整数数,以空格隔开。若小X 最多能获得的金币数能达到期望值(即大于等于),则输出小X 最多能获得的金币数以及金币总数能达到期望值的格子数的最小值;若小X 最多能获得的金币数不能达到期望值(即小于),则输出金币数最多的那个格子中的金币数。

样例输入

17 3 10

样例输出

12 3

提示

举例,(123,456)处的金币将会被移动至(1*2*3,4*5*6)即(6,120)。


例如,左图是一个20*20的矩形格,蓝色标示出了坐标。已经按照游戏要求在每个格子中放入了一个金币。而在转换后金币将会变成右图。





【数据范围与约定】


对于20%的数据,保证0<M≤N≤100


对于50%的数据,保证0<M≤N≤2000


对于70%的数据,保证0<M≤N≤5000


对于100%的数据,保证0<M≤N≤10000