奇 怪 的做法的做法( 红 光 满 面 )
查看原帖
奇 怪 的做法的做法( 红 光 满 面 )
914352
ppler楼主2023/10/28 13:10

没用字符串 ,但写了个奇怪的函数来判断一个数的前p个位的数字(?)。主函数里先把输入的数字都存列表里,然后循环比较两个数字的前p位哪个大,大的排前面,最后遍历列表输出。刚学c++,不会优化啊qwq。

自己看吧(错了两个测试点,懒得改了)

#include <iostream>
#include <cmath>
using namespace std;
int h(int s,int p)
{
	int x=1,f=s;
	while(s>0)
	{
		s/=10;
		x++;
	}
	return f/pow(10,x-p-1);
}
int main()
{
	int n,a[100];
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			for(int k=1;k<=9;k++)
			{
				if(h(a[i],k)>h(a[j],k))
				{
					int b=a[i];
					a[i]=a[j];
					a[j]=b;
					break;
				}
			}
			
		}
	}
	if(a[1]==0)
	{
		cout<<"0";
		return 0;
	}
	for(int i=1;i<=n;i++)
	{
		cout<<a[i];
	}
}
2023/10/28 13:10
加载中...