1. 程式人生 > >UVALive 7431(遞推&遞歸_C題)解題報告

UVALive 7431(遞推&遞歸_C題)解題報告

body alt 維度 can mat char ref tps sed

題目鏈接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=5453

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

題意:給一個字符串,求它是在第幾個圖中的哪個位置,每個圖與之前圖的關系類似於將之前圖分割四份,變為新圖。

思路:題目找規律,首先確定維數,字符串多長就有多少維度,然後確定x和y坐標。x的值是由模2為1的值的位數加上2的位數此方得到。y值是由大於等於2的數目確定的2的位數次方得到。

代碼:

技術分享圖片
#include<cstdio>
#include<cstring>  
#include<cmath>

 

const int MAXN =30;
char s[MAXN]={0};


int main(void)
{
    
    while(~scanf("%s",s)){
        int n=0;
        int x=0;
        int
y=0; n =strlen(s); int calx[n]={0}; int caly[n]={0}; for(int j=0;j<n;j++){ calx[j]=s[j]-0; caly[j]=s[j]-0; } for(int i=0;i<n;i++){ if(calx[i]%2==1) calx[i]=1; else calx[i]=0; if(caly[i]>=2
) caly[i]=1; else caly[i]=0; } for(int k=0;k<n;k++){ if(calx[k]) x+=pow(2,(n-k-1)); if(caly[k]) y+=pow(2,(n-k-1)); } printf("%d %d %d\n",n,x,y); } }
View Code

UVALive 7431(遞推&遞歸_C題)解題報告