#include你试试看看。
#include
int card[5] = {1,3,9,27,81};
void foo(int value, int bit){
int i;
for(i=0;i<5;i++)
if(card[i]==value){
printf("%d",value);
return;
}
int base = 1;
int b = bit;
while(b--) base *= 3;
int v = value % base;
int need = base - v;
foo(value+need,bit+1);
while(need){
printf("-%d",base/3);
need -= base/3;
}
}
int main()
{
int x;
scanf("%d",&x);
foo(x,1);
printf("\n");
return 0;
}
//1,3,9,27,81是三进制的各个数位的十进制值,把输入的数字用3进制表示出来,从低位开始,跳过0,遇到1就加那一位的值,遇到2就减,在上一位加一。参考程序对任意正整数都有效。
#include "stdio.h"
void base3(int n, int base)
{
int m=n%3;
if (n>=2) base3((m==2)?(n+1)/3:n/3, base*3);
switch (m)
{
case 0:break;
case 1:if (n>=3) printf("+"); printf("%d", base);break;
case 2:printf("-%d", base);break;
default:break;
}
}
int main()
{
int n;
scanf("%d", &n);
base3(n, 1);
return 0;
}
答:5×﹙5-1÷5﹚=24