不懂别人的代码
查看原帖
不懂别人的代码
613128
x100212楼主2022/3/28 22:22
#include <bits/stdc++.h>
#define rep(i, a, n) for(int i = a; i <= n; i++)
#define per(i, n, a) for(int i = n; i >= a; i--)
using namespace std;
int a[10002]={0,1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768};
int main()
{
	int n,m;
    cin>>n;
    while(n)
	  per(i,15,1)
		if(n>=a[i])
		{
			n=n-a[i];
    		if(m==0)
			  m++;
			else
			  cout<<"+";
    		switch(i)
			{
    			case 1: cout<<"2(0)";break;
                case 2: cout<<"2";break;
                case 3: cout<<"2(2)";break;
                case 4: cout<<"2(2+2(0))";break;
                case 5: cout<<"2(2(2))";break;
                case 6: cout<<"2(2(2)+2(0))";break;
                case 7: cout<<"2(2(2)+2)";break;
                case 8: cout<<"2(2(2)+2+2(0))";break;
                case 9: cout<<"2(2(2+2(0)))";break;
                case 10: cout<<"2(2(2+2(0))+2(0))";break;
                case 11: cout<<"2(2(2+2(0))+2)";break;
                case 12: cout<<"2(2(2+2(0))+2+2(0))";break;
                case 13: cout<<"2(2(2+2(0))+2(2))";break;
                case 14: cout<<"2(2(2+2(0))+2(2)+2(0))";break;
                case 15: cout<<"2(2(2+2(0))+2(2)+2)";break;
            }
            break;
	    }
    return 0;
}

可以帮忙解释一下两个#define是什么意思吗?谢谢。

2022/3/28 22:22
加载中...