Bimokh is Mashmokh's boss. For the following n days he decided to pay to his workers in a new way. At the beginning of each day he will give each worker a certain amount of tokens. Then at the end of each day each worker can give some of his tokens back to get a certain amount of money. The worker can save the rest of tokens but he can't use it in any other day to get more money. If a worker gives backw tokens then he'll get dollars.
Mashmokh likes the tokens however he likes money more. That's why he wants to save as many tokens as possible so that the amount of money he gets is maximal possible each day. He has n numbers x1, x2, ..., xn. Number xi is the number of tokens given to each worker on the i-th day. Help him calculate for each of n days the number of tokens he can save.
The first line of input contains three space-separated integers n, a, b (1 ≤ n ≤ 105; 1 ≤ a, b ≤ 109). The second line of input containsn space-separated integers x1, x2, ..., xn (1 ≤ xi ≤ 109).
Output n space-separated integers. The i-th of them is the number of tokens Mashmokh can save on the i-th day.
5 1 4 12 6 11 9 1
0 2 3 1 1
3 1 2 1 2 3
1 0 1
1 1 1 1
0
题意:
给出 N(1 ~ 10 ^ 5),A(1 ~ 10 ^ 9),B(1 ~ 10 ^ 9),后给出这 N 个数(1 ~ 10 ^ 9),代表每天拥有的代币个数,每天都可以向雇主兑换钱币,兑换的规则是给 w 给雇主就可以换取 w * (a / b)(向下取整)这么多的钱币,问每天给代币从而每天都能获取最大的钱币数,输出能剩下的最大代币数。
思路:
数学。一开始单纯的想只要取模就好了,可是举例后发现不是这样的:
比如:a = 2,b = 3 。若 ai = 7 的话,( 7 X 2 ) % 3 = 2,取模的话是剩下两个,但是 ( 7 X 2 )/ 3 = 4.67 = 4,而 (6 X 2)/ 3 = 4,说明 7 个可以获得 4 个钱币,6 个也可以获得 4 个钱币,那么用 6 个,最大剩余代币量就是 1 而不是 2 。所以正确解法应该是:
先算出 ( ai * a )/ b 向下取整的可获得的最大兑换钱币数 k ,再返回去用这个 最大兑换钱币数k 算出 最少代币用量 ,总量 ai - 最少代币用量 剩下的自然就是 所剩的最大代币数了。
比如:a = 3,b = 4 。若 ai = 7,可得最大兑换钱币数是 5,而 (5 X 4 )/ 3 = 6,且不能整除,说明 6 个钱币是不能换到 5 个钱币的,只能换到 4 个,所以应该 6 要 + 1 = 7 才对。
返回去算出最少代币用量要判断 (k * b) 能不能整除 a,若能整除,说明这个数刚刚好为最少代币用量,若不能,则这个最少代币用量应该在除数的基础上 + 1。
AC:
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; typedef long long ll; ll res[100005]; int main () { int n, a, b; scanf("%d%d%d", &n, &a, &b); for (int i = 1; i <= n; ++i) { ll ans, t; scanf("%I64d", &ans); t = ((ll)ans * a) / (ll)b; res[i] = ans - (t * b) / (ll)a; if((t * b) % (ll)a) res[i]--; } printf("%I64d", res[1]); for (int i = 2; i <= n; ++i) printf(" %I64d", res[i]); printf("\n"); return 0; }
相关推荐
3 Multi-Application Smart Card Platforms and Operating Systems 4 Smart Cards and Security for Mobile Communications 5 Smart Cards for Banking and Finance 6 Security for Video Broadcasting 7 ...
在Laravel框架中,令牌(tokens)主要用于身份验证和授权,是Web应用中常见的安全机制。Laravel的令牌管理功能强大且灵活,尤其在API开发和处理无状态请求时尤为重要。"laravel-tokens"项目可能是一个专注于实现和...
21个网页tokens钱包源码,是我在学习钱包开发的时候找到的,都是从GitHub上下载
This document describes tokens and shows how to use them for non-volatile data storage in EmberZNet PRO.
批处理FOR参数F之tokens详解 在批处理中,FOR参数F之tokens是一种强大的命令,用于提取文本信息。tokens是一个选项,用于指定要提取的列数或范围。以下是tokens的详细解释和示例。 tokens=x,y,m-n tokens选项可以...
批处理之 for _f 中的delims和tokens_tokens.pdf
### Magic Tokens: Select Diverse Tokens for Multi-modal Object Re-Identification #### 概述 这篇CVPR论文《Magic Tokens: Select Diverse Tokens for Multi-modal Object Re-Identification》介绍了一种名为*...
《深入解析JavaScript Tokens源码》 JavaScript是一种动态类型的解释型编程语言,它的语法解析离不开一个重要的过程——令牌(token)解析。`js-tokens`库是一个专门用于解析JavaScript源代码为令牌的工具,它能快速...
词法分析器负责将输入的字符串分解为一系列的符号或“标记”(tokens),这些标记是解析器理解的最小单位。然后,语法分析器根据预定义的语法规则,将这些标记组合成更复杂的结构,如表达式树,进一步解释并执行公式...
在IT行业中,"tokens"是一个广泛使用的术语,它在多个领域有着不同的含义,但通常与数据标识、认证和授权有关。这里的标题和描述都只提到"tokens"这个词,没有提供更多的上下文信息,因此我们将从广义上探讨tokens在...
**SOF** and **EOF** tokens have been inserted at the start and end of shell sessions, respectively. Sessions are concatenated by date order and tokens appear in the order issued within the shell ...
词法分析器(lexer)负责将输入的数学表达式分解为一个个小的、有意义的单元,称为标记(tokens),如数字、运算符等。语法分析器(parser)则根据预定义的语法规则对这些标记进行组合,构建出表达式的抽象语法树...
此外,词法分析器(lexer)用于识别单词(tokens),如数字、运算符和函数名。 2. **运算符优先级和结合性**:理解运算符的优先级和结合性对于正确计算表达式至关重要。例如,乘法和除法的优先级高于加法和减法,而...
字符频率可以近似认为是难易程度排序
including optimal token oating and pricing for both the utility tokens and the equity tokens (aka, security token oerings, STOs)|in the presence of product risk and demand uncertainty, make ...
词法分析会将字符串分解成一系列的标记(tokens),如数字、运算符等。语法分析则根据这些标记构建AST,这是一个树形结构,每个节点代表一个操作或数值,反映表达式的结构。 在C++中,我们可以自定义词法分析器和...
"design-tokens": "design-tokens" } 然后执行: yarn design-tokens figma :如果要与figma同步。 yarn design-tokens build :如果要编译资产。 yarn design-tokens :如果您想同时与figma同步并编译资产。 ...
标题"PyPI 官网下载 | django-lock-tokens-0.1.3.tar.gz"表明这是一个从Python Package Index (PyPI) 官方网站获取的软件包,具体是django-lock-tokens的0.1.3版本,以tar.gz格式压缩。PyPI是Python开发者发布自己...
var Tokens = require ( 'map-tokens' ) ; var tokens = new Tokens ( 'foo "bar" baz quux' ) ; // tokenize anything in double quotes tokens . pattern ( / \" ( [ ^ \" ] + ? ) \" / ) ; // replace tokens ...