10 条题解

  • 2
    @ 2024-9-26 6:57:08

    #include<stdio.h>//笨蛋思维? int main(){ int n,a,i; scanf("%d",&n); while(n--){ int m,t=0; scanf("%d",&a); for(i=1;i<=a;i++){ t+=i;//来确定这个数在哪一行 m=i;//m代表第几行 if(t>=a){ break;

    } } if(m%20){//分奇数偶数行 if(ta){ printf("%d/1\n",m); } else{printf("%d/%d\n",a-t+m,t-a+1);}//比较抽象,想了很久。具体看题目给的图,找找规律 } else{ if(ta){ printf("1/%d\n",m);} else{printf("%d/%d\n",t-a+1,a-t+m);}//看清楚ta这种情况,这个比较容易漏。

    } }

    //就结束了?

    return 0; }

    • 1
      @ 2024-12-10 15:52:36

      #include<stdio.h>

      int main() { int t; scanf("%d", &t); while (t--) { int n; scanf("%d", &n); int sum = 0, ans = 1; int m=n; for (int k = 1; k <= 100000; k++) { if (sum+k < n) { sum += k; ans=k+1; m=m-k; } } if(ans%2==0){ printf("%d/%d\n",m,ans-m+1); } else{ printf("%d/%d\n",ans-m+1,m); } } return 0; }

      • @ 2024-12-10 15:53:00

        思路简单

    • 1
      @ 2024-11-1 15:23:39

      #include <stdio.h>

      int main()

      {

      int m;

      scanf("%d",&m);

      while(m--){

      int N;

      scanf("%d",&N);

      int ha=1,le=1;

      int n=1;

      int m=0;

      while(1){

      m+=n;

      if(n%2==1){

      int q=m;

      for(int i=1;i<=n;i++){

      le=n-i+1;

      ha=i;

      if(q==N){

      m=q;

      break;

      }

      q--;

      }

      }else{

      int q=m;

      for(int i=1;i<=n;i++){

      ha=n-i+1;

      le=i;

      if(q==N){

      m=q;

      break;

      }

      q--;

      }

      }

      n++;

      if(m==N){

      break;

      }

      }

      printf("%d/%d\n",ha,le);

      }

      return 0;

      }

      • 1
        @ 2023-11-30 21:20:48
        int m, n,bz,i,j,w;
        int main(void) {
        	scanf("%d", &m);
        	while (m--) {
        		bz = 1;
        		w = 0;
        		scanf("%d",&n);
        		for ( i = 1; n>0 ;i++){
        			n = n - i;
        			bz++;
        		}
        		bz--;
        		if (n < 0) {
        			w = n + i - 1;
        		}
        		else if (n == 0) {
        			w = i-1;
        		}
        		//printf("%d %d", bz, w);
        		if (bz % 2 == 0) {
        			printf("%d/%d\n", w, (bz + 1 - w));
        		}
        		else {
        			printf("%d/%d\n", (bz + 1 - w), w);
        		}
        	}
        }
        
        • 0
          @ 2024-11-27 17:36:41

          #include<stdio.h> int main() { int m,n; scanf("%d",&m); while(m--) { scanf("%d",&n); int i=n; int j=1; while(i>j) { i=i-j; j++; } if(j%20) { printf("%d/%d\n",i,j-i+1); } if(j%21) { printf("%d/%d\n",j-i+1,i); } } }

          1 11

          3 12 21

          6 31 22 13

          10 14 23 32 41

          15 51 42 33 24 15

          21 16 25 34 43 52 61

          28 71 62 53 4435 26 17

          36 18 27 3645 54 63 72 81

          45 91 82 73 64 55 46 37 28 19

          列举:第一列写的是到本行为止有多少个数(每行都从左开始数)

          可以观察到每行个数+1, 所以输入的数只需要递减遍历,当i=i-j < j,即该数在第j行; 再观察奇偶的区别输出即可。

          • 0
            @ 2024-9-24 11:53:06

            #include <stdio.h>

            int main() {
                int m, N, n, num, den, k;
                scanf("%d", &m); // 读取测试数据组数
            
                for (int i = 0; i < m; i++) {
                    scanf("%d", &N); // 读取每组的N值
            
                    // 计算分数的位置
                    n = 1; // 行数
                    k = 0; // 当前编号的索引
            
                    while (1) {
                        // 当前对角线的元素数量
                        k += n;
            
                        if (k >= N) {
                            // 找到对应的行和列
                            int position = N - (k - n); // 位置在当前对角线
                            if (n % 2 == 0) {
                                // 偶数行,分母递增,分子递减
                                num = position;
                                den = n + 1 - position;
                            } else {
                                // 奇数行,分子递增,分母递减
                                num = n + 1 - position;
                                den = position;
                            }
                            break;
                        }
                        n++; // 移动到下一行
                    }
                    
                    // 输出结果
                    printf("%d/%d\n", num, den);
                }
            }
            
            • 0
              @ 2023-12-13 18:21:57

              #include <stdio.h> int main() { int m; scanf("%d",&m); while(m--) { int n,t,a,b; scanf("%d",&n); int i=1; while(i*(i+1)<2n) { i++;//如果该项大于所编码的数量 } //此时的i表示该项所在的位数 i--;//为了求t i--后的 (ii+1)/2表示该项次数前面编码的数量 t=n-(i*(i+1)/2);//t表示第n项在第i次中站的位置的位数 if((i+1)%2==0) { a=t; b=(i+1)-(t-1); } else { a=(i+1)-(t-1); b=t; } printf("%d/%d\n",a,b);

              } return 0;

              }

              • 0
                @ 2023-10-19 20:51:21

                还是有点意思的找规律问题

                #include<iostream>
                using namespace std;
                int main()
                {
                    int m;
                    cin >> m;
                    while(m--)
                    {
                        int m;
                        cin >> m;
                        int sum = 0,num = 0,k = 0;
                        for(int i = 1 ; i < 1000 ; i++)
                        {
                            sum += i;
                            num += i-1;
                            if(m >= num&&m <= sum)
                            {
                                k = i;
                                break;
                            }
                        }
                        int cnt = m - num;
                        int fm,fz;
                        if(k % 2 == 1)
                        {
                            for(int i = k , j = 1 ; ; i-- , j++)
                            {
                                if(j == cnt)
                                {
                                    fz = i;
                                    fm = j;
                                    break;
                                }   
                            }
                        }
                        else if(k % 2 == 0)
                        {
                            for(int i = 1 ,j = k ; ; i++ , j--)
                            {
                                if(i == cnt)
                                {
                                    fz = i;
                                    fm = j;
                                    break;
                                }
                            }
                        }
                        cout << fz << "/" << fm << endl;
                    }
                    return 0;
                }
                
                
                • 0
                  @ 2023-10-4 11:09:22
                  将这些数分成几行(斜着 如1行只有 1 1 2行有 1 2
                  
                  和 2 1)然后计算出在第几行,最后分成奇偶情况
                  
                  讨论,很容易就能找出规律
                  ```#include<stdio.h>
                  int main()
                  {
                  	int m;
                  	scanf("%d",&m);
                  	while(m--)
                  	{
                  		int n;
                  		scanf("%d",&n);
                  		int sum=0;
                  		int d1=1;
                  		int i;
                  		while(sum<n)
                  		{
                  			for(i=1;i<=d1;i++)
                  			{
                  				sum++;
                  				if(sum==n)
                  				break;
                  			}
                  			if(sum<n)
                  			{
                  				d1++;
                  			}
                  		}
                  		if(d1%2==0)
                  		printf("%d/%d\n",i,d1-i+1);
                  		else
                  		printf("%d/%d\n",d1-i+1,i);
                  	}
                  }
                  ``````
                  `````````
                  ````````````
                  ```````````````
                  ``````````````````
                  `````````````````````
                  ````````````````````````
                  ```````````````````````````
                  ``````````````````````````````
                  `````````````````````````````````
                  
                  • 0
                    @ 2023-9-26 21:18:25

                    题目难度为2的题?

                    #include<stdio.h>
                    int number1[1000];
                    int main()
                    {
                        int n,m,j,k,t;
                        int i=1,sum=0;
                        while(1)
                        {
                            sum=sum+i;
                            number1[i]=sum;
                            i++;
                            if(sum>100000)
                                break;
                        }
                        scanf("%d",&m);
                        while(m--)
                        {
                            scanf("%d",&n);
                            for(j=1;j<i;j++)
                            {
                                if(n<=number1[j])
                                {
                                    t=j;
                                    break;
                                }
                            }
                            if(t%2!=0)
                            {
                                if((number1[j]-n)==(n-number1[j-1]-1))
                                    printf("%d/%d\n",(t+1)/2,(t+1)/2);
                                if((number1[j]-n)<(n-number1[j-1]-1))
                                {
                                    int z=t-(number1[j]-n);
                                    int y=number1[j]-n+1;
                                    printf("%d/%d\n",y,z);
                                }
                                if((number1[j]-n)>(n-number1[j-1]-1))
                                {
                                    int z=t-(number1[j]-n);
                                    int y=number1[j]-n+1;
                                    printf("%d/%d\n",y,z);
                                }
                            }
                            if(t%2==0)
                            {
                                if((number1[j]-n)<(n-number1[j-1]-1))
                                {
                                    int z=t-(number1[j]-n);
                                    int y=number1[j]-n+1;
                                    printf("%d/%d\n",z,y);
                                }
                                if((number1[j]-n)>(n-number1[j-1]-1))
                                {
                                    int z=t-(number1[j]-n);
                                    int y=number1[j]-n+1;
                                    printf("%d/%d\n",z,y);
                                }
                            }
                        }
                        return 0;
                    }
                    
                    • 1

                    信息

                    ID
                    155
                    时间
                    3000ms
                    内存
                    128MiB
                    难度
                    3
                    标签
                    (无)
                    递交数
                    361
                    已通过
                    191
                    上传者