Programming_Konjac 2023-04-09 11:08 采纳率: 27.3%
浏览 38
已结题

洋葱矩阵嗯无语了啊!

洋葱矩阵
时间限制:1秒 内存限制:128M
题目描述

小可想到了一种像洋葱一样一层一层地填充矩阵的方法,如下图:

img

从1开始如图填充。现在小可想要考考你,给你一个数k,需要你计算出这个数在矩阵中的坐标是多少。

矩阵中,
1的坐标为(1,1),
2的坐标为(1,2),
3的坐标为(2,2),…

输入描述

第一行一个正整数
t(1≤t≤100),代表小可问了t次。
每次询问,小可给出一个正整数
k(1≤k≤10^9)。
输出描述
对于小可的每次询问,输出k在矩阵中的坐标。
样例输入
7
11
14
5
4
1
2
1000000000
样例输出
2 4
4 3
1 3
2 1
1 1
1 2
31623 14130

这是我的代码

#include<bits/stdc++.h>
using namespace std;
int a[100005];
const int N=1e9+1;
void algorithm(){
    long long sum=0;
    for(int i=1,j=1; ;i+=2,j++){
        a[j]=i;
        sum+=i;
        if(sum>=N){
            break;
        }
    }
}
int main(){
    algorithm();
    int t;
    cin>>t;
    while(t--){
        int k;
        cin>>k;
        int ans=0,cnt=0,flag=1;
        for(int i=1; ; i++){
            cnt+=a[i];
            if(cnt==k){
                ans++;
                break;
            }
            if(cnt>k){
                flag=k-(cnt-a[i]);
                ans++;
                break;
            }
            ans++;
        }
        int x,y;
        if(flag>=a[ans]/2+1){
            x=ans;
            y=a[ans]-flag+1;
        }
        else{
            x=flag;
            y=ans;
        }
        cout<<x<<" "<<y<<endl;
    }
    return 0;
}

只能得50.00000000001
咋改啊

  • 写回答

3条回答 默认 最新

  • P2441M 2023-04-09 12:39
    关注

    你是直接把输入示例粘贴进去了吧。要一行一行输入,才会正常输出。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月31日
  • 创建了问题 4月9日

悬赏问题

  • ¥15 nslt的可用模型,或者其他可以进行推理的现有模型
  • ¥15 arduino上连sim900a实现连接mqtt服务器
  • ¥15 vncviewer7.0安装后如何正确注册License许可证,激活使用
  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并2
  • ¥66 关于人体营养与饮食规划的线性规划模型
  • ¥15 基于深度学习的快递面单识别系统
  • ¥15 Multisim仿真设计地铁到站提醒电路
  • ¥15 怎么用一个500W电源给5台60W的电脑供电
  • ¥15 请推荐一个轻量级规则引擎,配合流程引擎使用,规则引擎负责判断出符合规则的流程引擎模板id
  • ¥15 Excel表只有年月怎么计算年龄