数组变换(编程题)
来源:互联网 发布:领航时时彩二星软件 编辑:程序博客网 时间:2024/05/08 03:54
牛牛有一个数组,里面的数可能不相等,现在他想把数组变为:所有的数都相等。问是否可行。
牛牛可以进行的操作是:将数组中的任意一个数改为这个数的两倍。
这个操作的使用次数不限,也可以不使用,并且可以对同一个位置使用多次。
输入描述:
输入一个正整数N (N <= 50)接下来一行输入N个正整数,每个数均小于等于1e9.
输出描述:
假如经过若干次操作可以使得N个数都相等,那么输出"YES", 否则输出"NO"
输入例子:
21 2
输出例子:
YES
#include <stdio.h>#include <ctype.h>#include <stdlib.h>#define MAXLINE 1000000000//交换void swap(int *p, int *t){ int temp; temp = *p; *p = *t; *t = temp;}//判断是否是为2的n次幂,如果是返回0,不是返回1int issquare(int a, int b){ int c; if (a < b) swap(&a, &b); c = a/b; if(a == b * c){ //判断a/b是否是整数,其中a>b return (a/b-1)&(a/b); } else return 1; }//读取正整数int innum(void){ int c, num, i; num = i = 0; while(isdigit(c=getchar()) && num <= MAXLINE) num = num * 10 + (c - '0'); return num;}int main(){ int n, i=0; n = innum(); int num[n]; if(n>0 && n<=50){ while(i < n){ num[i] = innum(); i++; } for(i=0; i<n-1; i++) if (issquare(num[i], num[i+1])){ printf("NO\n"); break; } else if (i == n-2) printf("YES\n"); } else printf("'n' is out of the range.\n");}
阅读全文
0 0
- 数组变换(编程题)
- [编程题] 数组变换
- java数组变换(一)
- 数组变换
- 数组变换
- 数组变换
- 数组变换
- OpenGL编程指南-顶点数组、视图变换、投影变换
- 华为编程题之一:等式变换
- OpenGL基础图形编程(八)变换
- 数组的行列变换
- 数组变换图片
- json数组的变换
- 数组序列变换1
- 校招编程题(二) 字符串变换之广度优先遍历
- OpenCV编程->LPT变换
- 编程:等式变换
- [BZOJ1692][Usaco2007 Dec]队列变换(贪心+后缀数组)
- 测试
- 单例模式--饿汉模式
- 【Python学习系列十八】基于scikit-learn库逻辑回归训练模型(delta比赛代码3)
- springmvc参数封装
- C++学习(46)
- 数组变换(编程题)
- 数据采集与网站统计实现全过程
- el表达式
- Mybatis在sql语句中遍历id
- 库存扣多了,到底怎么整 | 架构师之路
- JVM调优总结(十)-调优方法
- 类方法前面为什么要用instancetype而不用id?
- 对HashMap的了解(待完善)
- php实现的冒泡算法