summaryrefslogtreecommitdiff
path: root/12060
diff options
context:
space:
mode:
authorAditya Naik2018-05-10 00:15:29 -0400
committerAditya Naik2018-05-10 00:15:29 -0400
commit631ca6817d552db1725c7d6a445705f709302139 (patch)
tree4ed1e943305fd5ff0772336034ee2a47458e68cc /12060
parent42fe0d8a06c1cecb7771823b9ae51220c469dc82 (diff)
reorg
Diffstat (limited to '12060')
-rwxr-xr-x12060/averagebin0 -> 35696 bytes
-rw-r--r--12060/average.cpp119
-rw-r--r--12060/average.in8
3 files changed, 127 insertions, 0 deletions
diff --git a/12060/average b/12060/average
new file mode 100755
index 0000000..557795a
--- /dev/null
+++ b/12060/average
Binary files differ
diff --git a/12060/average.cpp b/12060/average.cpp
new file mode 100644
index 0000000..5627b61
--- /dev/null
+++ b/12060/average.cpp
@@ -0,0 +1,119 @@
+#include <iostream>
+#include <cmath>
+#include <iomanip>
+using namespace std;
+
+int find_gcd(int a, int b);
+void printer(int c, int q, int num, int deno);
+
+int main(){
+ int n, cnum=0;
+ cin>>n;
+
+ while(n>0){
+ cnum++;
+ int nm, sum=0;
+ for(int i=0; i<n; i++){
+ cin>>nm;
+ sum += nm;
+ }
+ int gcd;
+ int deno, num, q;
+ if(abs(sum)>=n){
+ if(sum % n == 0){
+ num = sum/n;
+ deno = 0;
+ q = 0;
+ }
+ else{
+ gcd = find_gcd(sum,n);
+ while(gcd != 1){
+ sum /= gcd;
+ n /= gcd;
+ gcd = find_gcd(sum,n);
+ }
+ q = (sum-(sum%n))/n;
+ num = sum%n;
+ deno = n;
+ }
+ }
+ else{ //abs(sum)<n
+ gcd = find_gcd(n,sum);
+ while(gcd != 1){
+ sum /= gcd;
+ n /= gcd;
+ gcd = find_gcd(n,sum);
+ }
+ q = 0;
+ num = sum;
+ deno = n;
+ }
+ printer(cnum, q, num, deno);
+ cin >> n;
+
+ }
+}
+
+void printer(int c, int q, int num, int deno){
+ int dl=0, ql=0, nl=0, x=deno, y=q, z = num;
+ while (x /= 10)
+ dl++;
+ while(y /= 10)
+ ql++;
+ while(z /= 10)
+ nl++;
+ if(deno == 1 || deno == 0){
+ if(num<0)
+ cout<<"Case "<<c<<":\n"<<"- "<<abs(num)<<endl;
+ else
+ cout<<"Case "<<c<<":\n"<<num<<endl;
+ }
+ else if(q == 0){
+ if(num<0 || deno<0){
+ cout<<"Case "<<c<<":\n";
+ for(int k=0;k<dl+2;k++) cout<<" ";
+ cout<<abs(num)<<endl;
+ cout<<"- ";
+ for(int k=0;k<dl+1;k++) cout<<"-";
+ cout<<endl;
+ cout<<" "<<abs(deno)<<endl;
+ }
+ else{
+ cout<<"Case "<<c<<":\n";
+ for(int k=0;k<dl;k++) cout<<" ";
+ cout<<abs(num)<<endl;
+ for(int k=0;k<dl+1;k++) cout<<"-";
+ cout<<endl;
+ cout<<abs(deno)<<endl;
+ }
+ }
+ else{
+ if(num<0 || deno<0){
+ cout<<"Case "<<c<<":\n";
+ for(int k=0;k<dl+2+ql-nl+1;k++) cout<<" ";
+ cout<<abs(num)<<endl;
+ cout<<"- "<<abs(q);
+ for(int k=0;k<dl+1;k++) cout<<"-";
+ cout<<endl;
+ for(int k=0;k<3+ql;k++) cout<<" ";
+ cout<<abs(deno)<<endl;
+ }
+ else{
+ cout<<"Case "<<c<<":\n";
+ for(int k=0;k<dl+1+ql-nl;k++) cout<<" ";
+ cout<<num<<endl;
+ cout<<q;
+ for(int k=0;k<dl+1;k++) cout<<"-";
+ cout<<endl;
+ for(int k=0;k<2+ql-1;k++) cout<<" ";
+ cout<<deno<<endl;
+ }
+ }
+}
+
+int find_gcd(int a, int b){
+ if(b==0)
+ return a;
+ else
+ return find_gcd(b, a % b);
+}
diff --git a/12060/average.in b/12060/average.in
new file mode 100644
index 0000000..6ae00d8
--- /dev/null
+++ b/12060/average.in
@@ -0,0 +1,8 @@
+2 -1 1
+100 4 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1
+100 -8 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1
+1 -10000
+1 10000
+100 -909 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000
+100 -99 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000 10000
+0