列表

详情


NC251433. 列竖式

描述

小明最近在练习加法,对于没有进位的加法,他能轻易完成。

小明现在想知道对于一个正整数 A ,他想找到一个最小的正整数 B

使得 A+B 产生进位。

输入描述

输入共 T+1 行。

第一行一个整数表示 T(1≤T≤10^5)

接下来 T 行,每行一个整数表示 A (1≤A≤10^8)

输出描述

输出共 T 行,表示最小的正整数 B 。

示例1

输入:

3
114514
1314520
100

输出:

6
80
900

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(g++ 7.5.0) 解法, 执行用时: 294ms, 内存消耗: 972K, 提交时间: 2023-05-05 19:50:00

#include<bits/stdc++.h>
using namespace std;
	int main()
	{
		int t;
		cin>>t;
		while(t--)
		{
			int a,b=1;
			cin>>a;
			while(a%10==0)
			{
				a/=10;
				b*=10;
			}
			cout<<(10-a%10)*b<<endl;
		}
	}

C++(clang++ 11.0.1) 解法, 执行用时: 271ms, 内存消耗: 1560K, 提交时间: 2023-05-29 21:54:10

#include<bits/stdc++.h>
using namespace std;
int t,a,ans;
int main()
{
	for(cin>>t;cin>>a;)
	{
		for(ans=1;a%10==0;a/=10,ans*=10);
		cout<<(10-a%10)*ans<<"\n";
	}
}

pypy3 解法, 执行用时: 707ms, 内存消耗: 29512K, 提交时间: 2023-05-07 10:15:08

for _ in range(int(input())):
    a, b = int(input()), 1
    
    while a % 10 == 0:
        a //= 10
        b *= 10
    print(b * (10 - a % 10))
    

Python3 解法, 执行用时: 1403ms, 内存消耗: 5480K, 提交时间: 2023-05-06 13:32:56

for _ in range(int(input())):
    x = int(input())
    指数 = 0
    while x%10**指数==0:
        指数 += 1
    print(10**指数-x%10**指数)

上一题