今日练习
UVA 11078 AC;
UVA 11549 AC;
UVA11078
优化:
空间 n ^ 2 -> n ->1;
时间 n^2 -> n;
//
// Created by 21122 on 2022/6/1/0001.
//
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int MAXN = 150005;
int arr[MAXN];
int res;
int max_num;
int main()
{
int T;
cin >> T;
for(int i = 0; i < T; i++)
{
int n;
cin >> n;
// 重置
// res = -100000;
res = -10000000;
cin >> max_num;
// int -2147483648 到2147483647 注意范围
for(int j = 1; j < n; j++)
{
cin >> arr[j];
// if(j == 0) ????????????
// {
// max_num = arr[j];
// }
res = max(res, max_num - arr[j]);
max_num = max(max_num, arr[j]);
}
//重置
memset(arr, 0, sizeof arr);
cout << res << endl;
}
return 0;
}
UVA11549
//
// Created by 21122 on 2022/6/1/0001.
//
#include<iostream>
#include<cstring>
#include<algorithm>
#include<set>
using namespace std;
int n; // 1 <= n <= 9
long long k; // 0 < k < 10 ^ 9
long long arr[15]; // 大小不确定;
int index2;
long long temp_arr[20];
bool is_repeated(int temp)
{
for(int i = 0; i < index2; i++)
{
if(temp == arr[i])
{
return true;
}
}
return false;
}
long long get_next(int n, long long k)
{
if(k == 0)
{ // base condition;
return 0;
}
long long temp = k * k;
// 辗转除10法,以得到低 n 位;
int index = 0;
while (temp > 0)
{
temp_arr[index ++] = temp % 10;
temp /= 10;
}
//考虑 n >> index 的情况,则以小数为准;
if(n > index)
{
n = index;
}
long long res = 0;
for(int i = 0; i < n; i++)
{ // 注意此处不是 index-- ,而是 --index
res = res * 10 + temp_arr[--index];
}
return res;
}
int main()
{
int T;
cin >> T;
while(T--)
{
cin >> n;
cin >> k;
//重置
index2 = 0;
// 数据具有循环的特性(
//long long temp = k;
long long res = 0;
long long temp = k;
set<long long> s;
while(true)
{
res = max(res, temp);
// 将数组判定改为 set
if(!s.count(temp))
{
s.insert(temp);
}
else
{
break;
}
// if(!is_repeated(temp))
// {
// arr[index2 ++] = temp;
// }
// else
// {
// break;
// }
temp = get_next(n, temp);
}
//memset(arr, 0, sizeof arr);
//memset(temp_arr, 0, sizeof temp_arr);
cout << res << endl;
}
return 0;
}