1 solutions

  • 2
    @ 2024-11-30 16:29:34

    数据范围太小了

    #include<bits/stdc++.h>//a+(a&-a)
    using namespace std;
    const int prime[]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
    //打一个质数的表 
    int n;
    bool f=0;
    //判断是否为第一个因数 
    int main(){
    	cin>>n;
    	while(n!=1){//不既约就继续枚 
    		for(int i=0;i<25;i++){
    			//枚质数 
    			int cnt=0;
    			if(n%prime[i]==0){
    				while(n%prime[i]==0) n/=prime[i],cnt++;
    				//还有这个因数就继续除 
    				if(!f){//特判 
    					f=1;
    					if(cnt==1) cout<<prime[i];
    					else cout<<prime[i]<<'^'<<cnt;
    				}else{
    					if(cnt==1) cout<<'*'<<prime[i];
    					else cout<<'*'<<prime[i]<<'^'<<cnt;
    				}
    			}
    		}
    	}
    	return 0;
    }
    
    • 1

    Information

    ID
    696
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    10
    Tags
    # Submissions
    4
    Accepted
    4
    Uploaded By