codeforces Round#718(div.1 + div.2)A题

这篇博客主要介绍了如何利用动态规划解决一个数学问题,即找出将给定整数表示为2050数之和的最小数量。博主首先解释了2050数的概念,然后通过代码展示了一个简洁的解决方案,排除了无法表示的情况,并给出了若干测试用例的解答。在代码中,博主参考了他人思路,通过计算数值的末尾数字来确定所需2050数的数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

A. Sum of 2050

time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard output
A number is called 2050-number if it is 2050, 20500, …, (2050⋅10k for integer k≥0).

Description

Given a number n, you are asked to represent n as the sum of some (not necessarily distinct) 2050-numbers. Compute the minimum number of 2050-numbers required for that.

Input

The first line contains a single integer T (1≤T≤1000) denoting the number of test cases.

The only line of each test case contains a single integer n (1≤n≤1018) denoting the number to be represented.

Output

For each test case, output the minimum number of 2050-numbers in one line.

If n cannot be represented as the sum of 2050-numbers, output −1 instead.

Example

input

6
205
2050
4100
20500
22550
25308639900

output

-1
1
2
1
2
36

Note

In the third case, 4100=2050+2050.

In the fifth case, 22550=20500+2050.

直接暴力把
直接写的太繁杂了,参考了下钱队的代码 ~~这里需要手动==@钱队==

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <string>
#define swap(a,b) { int temp = a; a = b ; b = temp ; }
typedef long long ll;
using namespace std;

const int maxn = 2e5 + 5;
ll arr[maxn];

int main()
{
	int t;
    cin >> t;
    while (t--) {
        ll n;
        cin >> n;
        if (n < 2050 || ((ll)(n / 2050) * 2050 != n)) {
            cout << -1 << endl;
            continue;
        }
        ll ans = n / 2050;
        int i = 0;
        ll sum = 0;
        while (ans) {
            sum += ans % 10;
            ans /= 10;
        }
        cout << sum << endl;
    }
	return 0;
}

室友在寝室打游戏,根本没心思写题呀…
我混子一个,写个a题签到,太难了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值