IOT娘拿到了n个数字 � � a i ,他有一种奇妙的想法 题目描述 * 如果数字位数不同,则按数字位数从大到小排序 * 如果数字位数相同,则数字大小从小到大排序。 输入格式 第一行给出一个正整数 n ,第二行给出 n个正整数, 输出格式: 一行输出按照规则排列后的序列。请用C++编写代码
时间: 2023-05-27 19:06:42 浏览: 53
C++代码如下:
#include<bits/stdc++.h>
using namespace std;
int n;
int a[1005];
bool cmp(int x,int y){
int tx=log10(x)+1,ty=log10(y)+1;
if(tx==ty){
return x<y;
}
return tx>ty;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}
相关问题
IOT娘拿到了n个数字 � � a i ,他有一种奇妙的想法 题目描述 * 如果数字位数不同,则按数字位数从大到小排序 * 如果数字位数相同,则数字大小从小到大排序。 输入格式 第一行给出一个正整数 � n 第二行给出 � n个正整数 � � a i 输出格式 一行输出按照规则排列后的序列
算法1
(按位数从大到小排序,位数相同按大小从小到大排序)
- 先将所有数字转换为字符串,以便比较其位数和大小
- 定义一个比较函数,将两个字符串按照题目要求进行比较
- 使用快速排序对所有字符串进行排序
- 将排序好的字符串转换为数字,输出即可
时间复杂度
- 快速排序的时间复杂度为O(nlogn)
- 比较函数的时间复杂度为O(max(len(x), len(y)))
- 总时间复杂度为O(nlogn * max(len(x)))
Python 代码
n = int(input())
a = list(map(str, input().split()))
def cmp(x, y):
if len(x) != len(y):
return len(x) > len(y)
else:
return x < y
a.sort(key = cmp_to_key(cmp))
print(" ".join(a))
算法2
(按位数从大到小排序,位数相同按大小从小到大排序)
- 定义一个比较函数,将两个数字按照题目要求进行比较
- 使用快速排序对所有数字进行排序
- 输出即可
时间复杂度
- 快速排序的时间复杂度为O(nlogn)
- 比较函数的时间复杂度为O(max(log10(x), log10(y))),其中log10表示数字的位数
- 总时间复杂度为O(nlogn * max(log10(x)))
Python 代码
n = int(input())
a = list(map(int, input().split()))
def cmp(x, y):
if len(str(x)) != len(str(y)):
return len(str(x)) > len(str(y))
else:
return x < y
a.sort(key = cmp_to_key(cmp))
print(" ".join(map(str, a)))
如果IOT平台和通讯平台不在一个wifi网络下如何通讯呢
如果IOT平台和通讯平台不在同一个WiFi网络下,可以通过以下方法进行通讯:
1. 通过公网IP地址和端口号进行通讯:IOT平台和通讯平台可以通过公网IP地址和端口号进行通讯,但需要保证设备都有公网IP地址,并且需要进行端口映射。
2. 使用中间服务器进行通讯:可以使用一个中间服务器,将IOT平台和通讯平台连接到同一个服务器,从而实现通讯。
3. 通过物联网协议进行通讯:可以使用物联网协议如MQTT、CoAP等,这些协议可以在不同的网络环境下进行通讯,因此可以用于实现跨网络的通讯。
4. 通过移动网络进行通讯:如果IOT平台和通讯平台都连接到移动网络,可以使用移动网络通讯技术如4G、5G等实现通讯。