阶乘嵌套的两个数进行比较, eg. 50!!!!!! 85!!!!
来源:互联网 发布:梦想的声音 知乎 编辑:程序博客网 时间:2024/04/30 07:53
这个是百度的一道面试题目好像。
我的思路是,将其中一个数的!去掉,即拿掉两个字符串中相等的!部分:
完整的实例如下,希望别人还有更加好的算法,请指正:
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
bool check(char *str1, char *str2){
int i = 0;
int s1_len = strlen(str1);
int s2_len = strlen(str2);
char *p = (char *)malloc(s1_len), *p1;
char *q = (char *)malloc(s2_len), *q1;
strcpy(p, str1);
strcpy(q, str2);
p1 = p;
q1 = q;
while ( (*p != '!') && (*p != '/0') ) {
i++;
p++;
}
*p = '/0';
s1_len = s1_len - i; //求出str1中!的个数
i = 0;
while ( (*q != '!') && (*q != '/0') ) {
i++;
q++;
}
*q = '/0';
s2_len = s2_len - i; //求出str2中!的个数
int num1 = atoi(p1); //转化str1中的数字部分
int num2 = atoi(q1); //转化str2中的数字部分
int x = 1, xx = 0; //xx存储阶乘得到的值,然后与另个值直接比较
if (s1_len > s2_len) {
for (int i = 1; i <= s1_len - s2_len; i++){
for (int j = 1; j <= num1; j++) {
x = x*j;
xx = x;
}
num1 = x;
x = 1;
}
return xx == num2;
}
else {
x = 1;
for (int i = 1; i <= -(s1_len - s2_len); i++){
for (int j = 1; j <= num2; j++) {
x = x*j;
xx = x;
}
num2 = x;
x = 1;
}
return xx == num1;
}
}
int main() {
bool a = check("24!!", "4!!!!");
printf("The two string %s/n", a?("equal!"):("not equal!") );
}
- 阶乘嵌套的两个数进行比较, eg. 50!!!!!! 85!!!!
- 两个任意阶阶乘数比较大小
- 不进行比较如何确定两个数的大小
- 比较两个数的大小
- 比较两个数的大小
- 比较两个数的大小
- 两个数大小的比较
- 比较两个数的大小
- 比较两个数的大小
- 比较两个数的大小
- 比较两个数的大小
- 比较两个数的大小
- 两个数大小的比较
- 比较两个数的大小
- 比较两个数的大小
- 比较两个数的大小
- 比较两个数的大小
- 比较两个数的大小
- 金额小写变大写 C#版
- 金额小写变大写 VB版本
- ZOJ 2074 Trip
- 在oracle中Logmnr进行日志挖掘
- 当年北洋军阀是怎么管理城市小贩的?
- 阶乘嵌套的两个数进行比较, eg. 50!!!!!! 85!!!!
- google在我这里胜了百度一次
- 传值调用与传址调用举例
- Struts 2与AJAX
- 升级Webwork2.2版本注意点
- 我看各种语言
- XSLT 是什么类型的语言?
- Window 中窗口的层次关系以及窗口的属性
- GDI函数SetPolyFillMode的效果