博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 5055 Bob and math problem
阅读量:6364 次
发布时间:2019-06-23

本文共 1573 字,大约阅读时间需要 5 分钟。

先把各个数字又大到小排列,如果没有前导零并且为奇数,则直接输出。如果有前导零,则输出-1。此外,如果尾数为偶数,则从后向前找到第一个奇数,并把其后面的数一次向前移动,并把该奇数放到尾部。

值得注意的是当输入为960时,通过这种方法会得到具有前导零的数字。因此最后需要判断进行移动后,首位是否为零。

代码如下:

1 #define MAXN 101 2 #include 
3 #include
4 #include
5 #include
6 using namespace std; 7 int arr[MAXN]; 8 int N; 9 bool comp(int a, int b)10 {11 return a>b;12 }13 14 void p(int *a)15 {16 for( int i = 0 ; i < N ; i++ )17 {18 printf("%d", a[i]);19 }20 printf("\n");21 }22 void solve()23 {24 sort(arr, arr+N, comp); 25 if( arr[N-1] & 1 && arr[0] != 0)26 {27 p(arr);28 }29 else if( arr[0] == 0 )30 {31 printf("%d\n", -1);32 }33 else34 {35 for( int i = N-2 ; i >= 0 ; i-- )36 {37 if( arr[i] & 1 )38 {39 int tmp = arr[i];40 for( int j = i+1 ; j <= N-1 ; j++ )41 {42 arr[j-1] = arr[j];43 }44 arr[N-1] = tmp;45 break;46 }47 }48 if( arr[N-1] & 1 && arr[0] != 0)49 {50 p(arr);51 }52 else53 {54 printf("%d\n", -1);55 }56 }57 }58 int main(int argc, char *argv[])59 {60 while( scanf("%d", &N ) != EOF)61 {62 for( int i = 0 ; i < N ; i++ )63 {64 scanf("%d", &arr[i]);65 }66 solve();67 }68 return 0;69 }

 

转载于:https://www.cnblogs.com/jostree/p/4000044.html

你可能感兴趣的文章
Android Animations动画使用详解
查看>>
打乱图片顺序,按一定比例分别存放
查看>>
【136】Cydia相关插件及配置
查看>>
Charlie's Change POJ - 1787
查看>>
jquery 下拉自动加载
查看>>
android ProgressDialog 对话框
查看>>
内存池技术的原理与实现
查看>>
初探boost之smart_ptr库学习笔记
查看>>
超级具体解读基本排序算法(不看懊悔,带排序演示动画)
查看>>
WPF做的小型下载工具和一点点吐槽
查看>>
23种设计模式总结 (转)
查看>>
DesignPattern 设计模式(工厂模式、装饰器模式、单例模式)
查看>>
JavaSE学习总结第05天_Java语言基础1
查看>>
NTFS文件系统的主要优点体现在以下三个方面
查看>>
Hadoop HA- hadoop集群部署
查看>>
Linux- AWS之EC2大数据集群定时开关机
查看>>
数据结构C++ 二叉树——二叉树的应用
查看>>
MySQL数据库索引
查看>>
模块(1)
查看>>
OpenCV——无法启动此程序,丢失**解决办法
查看>>