#include<bits/stdc++.h> using namespace std; struct BigInteger { static const int BASE=10000; static const int WIDTH=4; vector<long long>s; BigInteger(long long num=0) { *this=num; } BigInteger operator = (long long num) { s.clear(); do { s.push_back(num%BASE); num/=BASE; }while(num>0); return *this; } BigInteger operator = (const string& str) { s.clear(); int x,len=(str.length()-1)/WIDTH+1; for(int i=0;i<len;i++) { int end=str.length()-i*WIDTH; int start=max(0,end-WIDTH); sscanf(str.substr(start,end-start).c_str(),"%d",&x); s.push_back(x); } return *this; } BigInteger operator + (const BigInteger& b) const { BigInteger c; c.s.clear(); for(int i=0,g=0;;i++) { if(g==0&&i>=s.size()&&i>=b.s.size()) break; int x=g; if(i<s.size()) x+=s[i]; if(i<b.s.size()) x+=b.s[i]; c.s.push_back(x%BASE); g=x/BASE; } return c; } BigInteger operator - (const BigInteger& b) const { BigInteger c; c.s.clear(); for(int i=0,g=0;;i++) { if(g==0&&i>=s.size()&&i>=b.s.size()) break; int x=g;g=0; if(i<s.size()) x+=s[i]; if(i<b.s.size()) x-=b.s[i]; if(x<0) { x+=BASE;g=-1; } if(x!=0) c.s.push_back(x); } return c; } BigInteger operator * (const BigInteger& b) const { BigInteger c; c.s.clear(); int lena=s.size(),lenb=b.s.size(),lenc=lena+lenb; for(int i=0;i<lenc;i++) { c.s.push_back(0); } for(int i=0;i<lena;i++) { for(int j=0;j<lenb;j++) { c.s[i+j]+=s[i]*b.s[j]; } } for(int i=0;i<lenc-1;i++) { c.s[i+1]+=c.s[i]/BASE; c.s[i]%=BASE; } for(int i=lenc-1;c.s[i]==0;i--) { c.s.pop_back(); } return c; } BigInteger operator / (const long long& b) const { BigInteger c; c.s.clear(); for(int i=0;i<s.size();i++) { c.s.push_back(0); } long long g=0; for(int i=s.size()-1;i>=0;i--) { c.s[i]=(s[i]+g*BASE)/b; g=s[i]+g*BASE-c.s[i]*b; } for(int i=s.size()-1;c.s[i]==0;i--) { c.s.pop_back(); } return c; } BigInteger operator % (const long long& b) const { long long ans=0,lena=s.size(); for(int i=lena-1;i>=0;i--) { ans=(ans*BASE+s[i])%b; } return ans; } /*BigInteger operator / (const BigInteger& b) const// /运算符 (大数除大数) { } BigInteger operator % (const BigInteger& b) const// %运算符 (大数取模大数) { }*/ BigInteger operator += (const BigInteger& b) { *this=*this+b;return *this; } BigInteger operator -= (const BigInteger& b) { *this=*this-b;return *this; } BigInteger operator *= (const BigInteger& b) { *this=*this*b;return *this; } BigInteger operator /= (const long long& b) { *this=*this/b;return *this; } BigInteger operator %= (const long long& b) { *this=*this%b;return *this; } /*BigInteger operator /= (const BigInteger& b) { *this=*this/b;return *this; } BigInteger operator %= (const BigInteger& b) { *this=*this%b;return *this; }*/ bool operator < (const BigInteger& b) const { if(s.size()!=b.s.size()) return s.size()<b.s.size(); for(int i=s.size()-1;i>=0;i--) if(s[i]!=b.s[i]) return s[i]<b.s[i]; return false; } bool operator > (const BigInteger& b) const { return b<*this; } bool operator <= (const BigInteger& b) const { return !(b<*this); } bool operator >= (const BigInteger& b) const { return !(*this<b); } bool operator != (const BigInteger& b) const { return b<*this||*this<b; } bool operator == (const BigInteger& b) const { return !(b<*this)&&!(*this<b); } }; int tp; ostream& operator << (ostream &out,const BigInteger &x) { out<<x.s.back(); for(int i= x.s.size()-2;i>=0;i--) { char buf[20]; sprintf(buf,"%04d",x.s[i]); for(int j=0;j<strlen(buf);j++) out<<buf[j]; } return out; } istream& operator >> (istream &in, BigInteger &x) { string s; if(!(in >> s)) return in; x=s; return in; } int main() { int t; cin>>t; while(t--) { BigInteger a; cin>>a; if(a==1) cout<<"0"<<endl; else cout<<a*(a-1)/2<<endl; } return 0; }View Code