NC25657. 进制
描述
给一个长度不超过 18 的 01 串,你需要输出这个串在 2, 3, 4, 5, 6, 7, 8, 9, 10 进制表示下的数值在 10 进制下的和。
输入描述
第一行是一个正整数 T (T<=100000),表示测试数据的组数,
接下来 T 行,每行包含一个长度不超过 18 的 01 串,保证没有前导零。
输出描述
对于每组测试数据,输出一个整数。
示例1
输入:
2 10 101
输出:
54 393
C 解法, 执行用时: 64ms, 内存消耗: 3284K, 提交时间: 2023-04-16 22:43:33
#include <stdio.h> int main() {int n; scanf("%d",&n); while(n--) {long long k,s=0; scanf("%lld",&k); for(int i=2;i<=10;i++) {long long f=1,b=k; while(b) {s=s+(b%10)*f; f=f*i; b/=10;} } printf("%lld\n",s);} return 0;}
C++14(g++5.4) 解法, 执行用时: 404ms, 内存消耗: 2140K, 提交时间: 2019-05-14 20:29:31
#include<bits/stdc++.h> #include<cstring> using namespace std; int main(){ int t; cin>>t; while(t--) { char s[20]; cin>>s; long long k=0,m; for(int i=2;i<=10;i++) k=strtol(s,NULL,i)+k; cout<<k<<endl; } }
C++ 解法, 执行用时: 230ms, 内存消耗: 2216K, 提交时间: 2021-10-12 23:24:26
#include<bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--) { char s[20]; cin>>s; long long k=0,m; for(int i=2;i<=10;i++) k=strtol(s,NULL,i)+k; cout<<k<<endl; } }
Python3 解法, 执行用时: 960ms, 内存消耗: 6448K, 提交时间: 2023-01-18 15:31:37
T=int(input()) for t in range(T): l=input() r=0 for i in range(2,11): r+=int(l,i) print(r)