【菜科解读】
#include#define N 1000 //要计算的Nlong s[N]={1,1},n=N,t=2,a=1,b=0;int main()//雨中飞燕之作{for(;a0;)printf("%04d",s[*s]);return 0;}在VC6,DevC,Code::Block上测试,算1000!用时毫秒级最少字节数版本(从long定义变量开始计算共155字节,不计算换行)#include //雨中飞燕之作#define N 1000 //要计算的Nlong s[N]={1},n=10000,t=2,a,b,m;main(){for(;a 四行,代码,算,1000,阶乘,精确,值,#includes
魔法数字MagicNumberC语言代码
题目描述:如果一个数(可能包含前导0)乘以2,如142857*2=285714,依然由原来的数字组成的话,这样的数(142857)就叫Magic Number输入:多组测试数据,每组一行,每行是一个不大于1e10000整数(可能有前导0),遇到EOF标志结束程序输出:判断这个数是不是Magic Number,是的话输出“Magic Number”否则输出“Not Magic Number”样例输入:14285701428578571420588235294117647样例输出:Magic NumberMagic NumberNot Magic NumberMagic Number难度:Very EasyCODE:#include #include #define MAX 10001typedef struct {int date[MAX];int len;}BigInt;int magic(BigInt a,int m);int main() {char str[MAX];BigInt a;int i,len;while ( scanf("%s",str) != EOF ) {len = strlen(str);for ( i = 0; i #include #include int main() {int a[10005],old[10],mulold[10];memset(old,0,sizeof(old));memset(mulold,0,sizeof(mulold));char c;int i=0,j,k,bit=0,number=0;bool flag=true;for (;scanf("%c",&c)!=EOF;i=0,bit=0,number=0,flag=true) {//scanf("%c", while(c!=‘\n‘) {/*if(i==0&&c==‘0‘) {while(c==‘0‘) scanf("%c", }if(c==‘\n‘)break;*/ a[i]=c-‘0‘; old[c-‘0‘]=1;i++; scanf("%c", }//for(j=0;j=10) {if(old[tmp/10]==0) {printf("*Not Magic Number \n");flag=false;break;}mulold[tmp/10]=1; }if(old[tmp%10]==0) {printf("*Not Magic Number \n");flag=false;break;} mulold[tmp%10]=1; bit=tmp/10; }//for(k=0;k#include #include int main() {int a[10005],old[10],mulold[10];memset(old,0,sizeof(old));memset(mulold,0,sizeof(mulold));char c;int i=0,j,k,bit=0,number=0;bool flag=true;for (;scanf("%c",&c)!=EOF;i=0,bit=0,number=0,flag=true) {//scanf("%c", while(c!=‘\n‘) {/*if(i==0&&c==‘0‘) {while(c==‘0‘) scanf("%c", }if(c==‘\n‘)break;*/ a[i]=c-‘0‘; old[c-‘0‘]=1;i++; scanf("%c", }//for(j=0;j=10) {if(old[tmp/10]==0) {printf("Not Magic Number \n");flag=false;break;}mulold[tmp/10]=1; }if(old[tmp%10]==0) {printf("*Not Magic Number \n");flag=false;break;} mulold[tmp%10]=1; bit=tmp/10; }//for(k=0;k 魔法,数字,MagicNumberC,语言,代码,题目,描述
网易的算法高手GG写给MM的魔方
题目描述:据说,网易有自主开发的游戏引擎,参与开发的个个都是算法高手,喜欢研究各种好玩的东西。
有一天,有个小mm得到了一个魔方,不过魔方不是常规的3*3*3的!而是大小是2*2*3的一个长方体!她实在搞不定这种异形魔方,于是只好求助于引擎部某GG。
那GG看到后说,这太简单了,等我一会儿。
没多久,程序写好后,一下子就把小mm需要的公式算出来了,那个mm惊叹不已,并用这些公式迅速把魔方还原好了。
让小mm佩服的不得了。
你的算法能力怎么样呢?你也能办到吗?输入:魔方摆放例图(并且假设颜色分布为上黄下白左蓝右绿前红后橙): 2 3 1 0 10 11 9 8 6 7 5 4请你编写函数:int solve(const int m[], const int s[], char ans[])参数意义如下:m[] : 例图中的是位置编号,也是复原后的方块编号; m[a] = b 表示在位置a的地方,放了一个编号为b的方块 m这个数组的长度为12s[] : 用来表示每一块主色的朝向,黄白为主色,没有前两色时以红橙为主色; 主色面向上为0,向下为1,左为2,右为3,前为4,后为5 如附图sample,U面上各块,主色都面向上,朝向值为0 中层RF块,橙色面朝右,值为3。
s这个数组的长度为12输出:ans[]:返回复原(只需要各面同色)的最少的操作步骤,写法类似魔方公式: UDLRFB分别表示相应面,单独写一个字母表示这个面顺时针旋转90度, R2表示R面旋转180度,U‘表示U面逆时针旋转90度。
U的旋转方向是0->1->2->3,U‘是0->3->2->1 D的旋转方向是4->7->6->5,D‘是4->5->6->7 R2只算一步,步数以这6个字母的出现次数为准,之间不要用空格分隔函数返回值:返回还原的最少步数,要与ans里的步数一致。
样例输入:m= 3 2 4 5 0 1 7 6 9 11 10 8 s= 0 0 0 0 1 1 1 1 4 4 5 5样例输出:4 DUF2R2其它信息:输出的如4 DUF2R2,4表示返回值,返回值的答案唯一DUF2R2为ans数组中的内容,ans中的内容不唯一,只要是任意一解即可样例中的实际形状见题目数据保证出的数据是合理的,不会出现还原不了的情况提交的代码不要出现main函数另:如果你是色盲或者色弱,看不清楚图片上的颜色,也请加初级一群19472277(已经在中级群或者主群的就免加了),会给你更详细的解释难度:Hard 网易,的,算法,高手,写给,魔方,题目,描述,据说,