xbtianlang 发表于 2011-7-14 11:57:57

#include   

#define a printf("%d ",i++);

#define b(x) x x x x x
#define Print1000 b(b(b(a a a a a a a a))) //1000=5*5*5*8

//#define b(x) x x x x x x x x x x
//#define Print1000 b(b(b(a)) ...
G-Spider 发表于 2011-7-14 11:00 http://bbs.emath.ac.cn/images/common/back.gif
#define Print1000 b(b(b(b(a) a a a))) //1000=5*5*5*(5+3)
没试过,能不能这样改?

shshsh_0510 发表于 2011-7-20 06:43:48

就是不让好好说话呗,我也凑凑热闹
不过我这个不太简洁,估计得费番力气才能少于30行.
由于较复杂,我只打到20
#include <stdio.h>
#include<gmp.h>
#pragma comment( lib, "libgmp-510.lib" )
void main()
{
        mpz_t a,b,c,d,e;
        mpz_init(a); mpz_init(b); mpz_init(c); mpz_init(d); mpz_init(e);
        mpz_set_str(a,"392020382020372020362020352020342020332020322020312020302020",16);
        mpz_set_str(b,"001100001100001100001100001100001100001100001100001100001100",16);
    mpz_ui_pow_ui(c,16,60);
        mpz_add(d,a,b);
        mpz_mul(c,c,d);
        mpz_add(d,c,a);

        char * p =(char *)(*(((int *)d)+2));
        *(p+60)=0;
                  printf("%s\n",p);

                   getchar();
}

gxqcn 发表于 2011-7-20 08:24:03

啊哈,连大整数都想到了。:)

wayne 发表于 2011-7-20 12:37:33

32# shshsh_0510
额,看不懂啊

G-Spider 发表于 2011-7-20 13:12:19

本帖最后由 G-Spider 于 2011-7-20 14:22 编辑

34# wayne
ascii中,20h对应空格,30h~39h对应0~9 以此为基础做一些运算。#include <stdio.h>
#include "gmp.h"
#pragma comment( lib, "libgmp-3.lib" )
void main()
{
        mpz_t a,b,c,d;
        mpz_inits(a,b,c,d);
        mpz_set_str(a,"392020382020372020362020352020342020332020322020312020302020",16);
        mpz_set_str(b,"1000001000001000001000001000001000001000001000001000001",16);
        mpz_ui_pow_ui(c,16,60);
        mpz_mul_ui(d,b,256*0x11);
        mpz_add(d,a,d);
        mpz_mul(d,c,d);
        mpz_add(d,d,a); //a b c 未变
       
        //*((char *)(d->_mp_d)+60)=0;
        printf("\n\n%s\n",d->_mp_d);
       
        getchar();
}

shshsh_0510 发表于 2011-7-20 18:13:45

35# G-Spider


如果哪个超大的数有一个简洁的算式表示就好了

G-Spider 发表于 2011-7-20 18:37:07

36# shshsh_0510 我也在找这样的展开公式,呵呵。

〇〇 发表于 2011-7-20 21:48:29

try catch不算条件吧

hzyg 发表于 2011-8-9 14:46:41

1 #include<stdio.h>
2 int main(int argc)
3 {
4         printf("%d\n",argc);
5         return ( argc==1000 || main(argc+1));
6 }
最直观的

若水 发表于 2011-11-21 11:51:09


int main(int i)
{
return (i<1001 && printf("%5d", i)&& main(i++));
}
页: 1 2 3 [4] 5
查看完整版本: C/C++,打印整数1到1000,不使用循环,条件语言